各位,
我在EF6中有一个针对Oracle的数据库优先项目,我在模型中指定某些列应该是Int32s。但是,当返回Web有效载荷时,这些属性以数字形式返回,例如58.0、3.0、486.0等.当然,这使得整个JSONDeserializer抛出了很多东西。
我想我应该能够改变EF内的映射,但是现在我是如何逃避的。任何帮助都将不胜感激!
编辑以作澄清:
查看.edmx,属性将应该整数显示为:
<Property Name="OrderId" Type="Int32" />
<Property Name="StatusId" Type="Int32" Nullable="false" />在甲骨文方面,我可以确认它们是编号。
关于为什么在这个OP中包含Web :我只是想提供一些上下文来说明请求是如何返回的。我不是使用DTO,而是直接返回模型。
很高兴提供更多的信息(一旦我拿到笔记本电脑)。
N
发布于 2015-05-19 11:21:15
好吧,看起来这对其他可能有同样困难的人来说是可行的。
如果使用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将不再以小数形式返回。
希望这能帮上忙!(保持优雅,甲骨文.( ;)
发布于 2016-07-21 07:05:29
我试过了上面的解决方案,但对我没有用。我找不到web.config文件,而是用上面的建议修改了App.config文件。
https://stackoverflow.com/questions/30315299
复制相似问题