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

2024-03-22

我正在将 EF 4(数据库优先,完全由它生成的模型)与 Oracle 10g 数据库一起使用,并且我在一个字段上遇到问题。

我的字段定义为NUMBER(5)在我的数据库中。在我的模型中,EF 将其定义为short。 我的问题是我有一些值大于 32,767(短路的最大值) 我找到了这篇文章:实体框架生成short而不是int https://stackoverflow.com/questions/12339918/entity-framework-generates-short-instead-of-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(参见编辑)

有没有办法让它双向工作?

顺便说一句,有什么方法可以告诉实体对 oracle INTEGER 字段使用 int32 吗?它默认使用十进制。

EDIT

在一步步调试的过程中,我发现了为什么我的值为-31073。我忘记了这一行:

dao.Value = (short)dto.Value;

我的两个值都是int,但简而言之,隐式转换就是起源。


我找到了如何消除错误。

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

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

我删除了Precision="5"警告消失了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EF4 将 Int32 转换为 Oracle number(5) 的相关文章

随机推荐