我正在使用实体框架和 Oracle。Oracle 的 ODAC 似乎有一个已知的错误,即 NUMBER 类型的数据被实体框架转换为 Int64。我认为一个观点会帮助我,但
CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
union
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
当您查看视图时,数据类型是数字,所有这些都没有精度。这似乎是 UNION 的结果
CREATE OR REPLACE VIEW test as
select 1 AS ONE ,CAST(2 AS NUMBER(1)) AS TWO ,CAST(3 as INT) AS THREE from dual
产生 NUMBER、NUMBER(1)、NUMBER 作为数据类型
是否有一种解决方法可以强制 Oracle 在使用 UNION 的视图中获得精度?
编辑:@Phil 询问所需的结果是。他是正确的,实体框架必须具有精度才能使用,因此上面示例中所需的数据类型将是 NUMBER(1)
编辑:@Phil for this version Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Windows 32 位上的生产带有联合的视图给出了一个没有精度的 NUMBER 视图。实体框架将此解释为 int 64。
我正在寻找一种解决方案,它以实体框架可以理解为 32 位整数的精度显示 NUMBERS。从 NUMBER(1) 到 NUMBER (9) 的任何精度都可以完成这项工作。
如果你说
给你你想要的,为什么不使用同样的 union :