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

时间:2014-04-24 04:39:27

标签: .net oracle entity-framework

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

var competitions = db.PKG_API_PORTAL_SP_GETFBCOMPETITION().ToList();
  

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

我发现了这个问题Oracle Data Provider to CLR type mapping

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

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

2 个答案:

答案 0 :(得分:0)

我假设,因为您正在使用带有EF的DotConnect For Oracle,您将从函数/ SP返回一个Refcursor,并将其投影到数据类型。

您有三种方法可以解决问题: 1-将要映射的对象中的类型更改为Int64。这是最简单的解决方案。如果您正在使用实体开发人员,只需在地图中选择类型,将类型更改为' int64',然后点击确定,重新生成您的课程。

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

答案 1 :(得分:0)

NUMBER(n)类型的每一列代表一个INT64。 " N"充当表的约束,但其中的所有数据都是相同的大小。 您最好在客户端转移到Int64类型。 干杯!

相关问题