实体框架,将oracle数据库类型号(10)映射到.net Int32

Tim*_*ess 7 .net oracle entity-framework

oracle数据库中的字段类型number(10),大于.net Int32范围.我现在使用实体框架从该表中获取数据,并将其映射到该表的数据库实体.但是,当我获取数据时,我收到此错误:

var competitions = db.PKG_API_PORTAL_SP_GETFBCOMPETITION().ToList();
Run Code Online (Sandbox Code Playgroud)

键字段''的类型应为'System.Int32',但提供的值实际上是'System.Int64'类型.

我发现这个问题Oracle Data Provider要CLR类型映射

以下是解释数据类型如何翻译的文章 http://www.devart.com/dotconnect/oracle/docs/DataTypeMapping.html

但现在我需要一个解决方案来解决这个问题.

小智 0

我假设由于您将 DotConnect For Oracle 与 EF 一起使用,因此您将从投影到数据类型的函数/SP 返回 Refcursor。

您可以通过三个选项来解决该问题: 1- 将要映射的对象中的类型更改为 Int64。这是最简单的解决方案。如果您使用实体开发人员,只需在映射中选择类型,将类型更改为“int64”,单击“确定”,重新生成您的类。

2- 更改返回的 Refcursor,将数字 (10) 向下转换为数字 (9)。这可能会损害性能,并最终会破坏某些东西,所以我不推荐它。