Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用EF4将Int32转换为Oracle编号(5)_Oracle_C# 4.0_Entity Framework 4 - Fatal编程技术网

使用EF4将Int32转换为Oracle编号(5)

使用EF4将Int32转换为Oracle编号(5),oracle,c#-4.0,entity-framework-4,Oracle,C# 4.0,Entity Framework 4,我正在使用EF4(首先是数据库,完全由它生成的模型)和oracle 10g数据库,但有一个字段存在问题 我的字段在我的数据库中定义为编号(5)。在我的模型中,EF将其定义为short。 我的问题是,我有一些值大于32767(短字符的最大值) 我找到了这个帖子:。我按照说明进行操作,它正常工作,我的模型现在包含Int32值 但我有一个新问题: Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullabl

我正在使用EF4(首先是数据库,完全由它生成的模型)和oracle 10g数据库,但有一个字段存在问题

我的字段在我的数据库中定义为编号(5)。在我的模型中,EF将其定义为
short
。 我的问题是,我有一些值大于32767(短字符的最大值) 我找到了这个帖子:。我按照说明进行操作,它正常工作,我的模型现在包含Int32值

但我有一个新问题:

Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=True,DefaultValue=]' of member 'XX' in type 'Model.XXX' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=5,Scale=0]' of member 'XX' in type 'Model.Store.XXX'.
此错误始终显示在Visual Studio的“错误列表”选项卡中。但是,构建成功了一半,它也起了一半作用:

  • 在数据库工作中读取值
  • 写入值无效:99999已在-31073中转换(请参见编辑)
有没有一个解决方案可以让它在两方面都起作用

顺便问一下,有没有办法告诉entity对oracle整数字段使用int32?它默认使用十进制

编辑

在一步一步地调试时,我发现了为什么我的值是-31073。我忘了这句话:

dao.Value = (short)dto.Value;

我的两个值是int,但简而言之,隐式转换就是原点。

我找到了消除错误的方法

我以xml模式编辑了edmx文件,在ssdl部分找到了我的字段:

<Property Name="SIT_INSEE" Type="number" Precision="5" />


我删除了
Precision=“5”
,警告消失了。

只是为了增加我的两分钱,以防其他人有类似的问题。我注意到,如果将以下内容添加到web.config中的映射中,然后从头开始重新创建edmx模型(删除它并从数据库重新生成),则可以解决其中一些问题。简单地将值添加到web.config无法解决任何问题(我猜可能是在幕后重新生成一些代码)



它使用
十进制
表示
数字
,因为数字可以是12.433242整数可以保存该值。无论如何,关于您的问题,您是否尝试与Oracle联系以获得正式答案?您是否使用Oracle数据提供程序for Oracle 11g?我在Oracle11g的ODP中使用EF4,我对OracleInteger没有问题。
  <oracle.dataaccess.client>
    <settings>
      <add name="int32" value="edmmapping number(9,0)" />
    </settings>
  </oracle.dataaccess.client>