Oracle和Entity Framework 6:Int32以数字形式返回
本文关键字:数字 字形 返回 Int32 Entity Framework Oracle | 更新日期: 2023-09-27 17:49:35
Folks,
我在EF6中有一个针对Oracle数据库的数据库优先项目,并且我在模型中指定了某些列应该是Int32。然而,当返回Web API有效负载时,这些属性将以数字形式返回,例如58.0、3.0、486.0等等…当然,这会使整个JSONDeserializer异常抛出。
我想我应该能够为它更改EF中的映射,但目前到底是怎么回事。任何帮助都将不胜感激!
编辑澄清:
查看.edmx,属性显示应该是整数,如下所示:
<Property Name="OrderId" Type="Int32" />
<Property Name="StatusId" Type="Int32" Nullable="false" />
在Oracle方面,我可以确认他们是Number。
关于为什么Web API包含在这个OP中:我只是试图提供一些关于如何返回请求的上下文。我没有使用DTO,而是直接返回模型。
很乐意提供更多信息(只要我拿到笔记本电脑(。
N
好吧,对于其他可能有同样困难的人来说,这似乎会奏效。
如果您使用的是Oracle的托管数据访问库,请将以下内容添加到您的app/web.config中:
<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmMapping dataType="number">
<add name="bool" precision="1" />
<add name="byte" precision="2" />
<add name="int16" precision="5" />
<add name="int32" precision="38" />
<add name="int64" precision="38" />
</edmMapping>
</edmMappings>
</version>
</oracle.manageddataaccess.client>
或者根据自己的口味进行调整。但是,请注意,您可能也必须映射Int64(尽管我不相信我的DB中有任何可以量化的东西,但有时我会遇到初始化程序异常。
您可能需要从.edmx
文件中删除您的模型并重新添加。
但这将解决您的问题,您的JSON将不再以小数形式返回。
希望能有所帮助!(保持优雅,Oracle…;(
我尝试了上面的解决方案,但不适用。我找不到web.config文件,而是用上面的建议修改了App.config文件。