使用EF4将Int32转换为Oracle编号(5)
我正在使用EF4(首先是数据库,完全由它生成的模型)和oracle 10g数据库,但有一个字段存在问题 我的字段在我的数据库中定义为编号(5)。在我的模型中,EF将其定义为使用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
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中转换(请参见编辑)
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>