我有一个具有 Int32 类型属性的实体类:在使用 DevArt 为 ORACLE 生成 DDL 时,会生成一个 NUMBER(10) 列。读取和写入实例完美无缺。
但是,在获取此实体类的实例时,将自定义查询发送到 ObjectContext 上的 ExecuteStoreQuery,此属性似乎作为 System.Double 返回,因此构造实例失败。
我可以提示 DevArt 构造 System.Int32 吗?
谢谢你。巴特
我有一个具有 Int32 类型属性的实体类:在使用 DevArt 为 ORACLE 生成 DDL 时,会生成一个 NUMBER(10) 列。读取和写入实例完美无缺。
但是,在获取此实体类的实例时,将自定义查询发送到 ObjectContext 上的 ExecuteStoreQuery,此属性似乎作为 System.Double 返回,因此构造实例失败。
我可以提示 DevArt 构造 System.Int32 吗?
谢谢你。巴特
原因是 ExecuteStoreQuery 方法中使用的 OracleDataReader 的类型映射与实体框架提供程序中使用的类型映射不同。
我建议您使用NumberMappings,我想您需要将 Number(10) 映射到 Int32: Number Mappings=((NUMBER,10,10,System.Int32)
。这些更改应保留到模型连接字符串(它们复制了默认的 EF 映射规则,对于来自 ExecuteStoreQuery 的 OracleDataReader 是必需的)。如果问题仍然存在,请告诉我们。