我正在使用带有 oracle 10g 数据库的 EF 4(首先是数据库,完全由它生成的模型),但我遇到了一个字段的问题。
NUMBER(5)
我的字段在我的数据库中定义为 a 。在我的模型中,EF 将其定义为short
. 我的问题是我的一些值大于 32,767(最大短)我发现这篇文章:实体框架生成 short 而不是 int。我按照说明进行操作,我的模型现在包含 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(见编辑)
有没有办法让它双向工作?
顺便说一句,有没有办法告诉实体将 int32 用于 oracle INTEGER 字段?它默认使用十进制。
编辑
在一步步调试的过程中,我发现为什么我的值是-31073。我忘记了这一行:
dao.Value = (short)dto.Value;
我的两个值是 int,但简而言之,隐式转换是原点。