Oracle 和 Entity Framework 6:Int32 作为数字返回
Oracle and Entity Framework 6: Int32 returned as number
各位,
我在 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(即使我不相信我的数据库中有任何可以量化的东西,但我有时会遇到初始化程序异常。
您可能需要从 .edmx
文件中删除您的模型并重新添加它。
但这会解决您的问题,您的 JSON 将不再以小数形式返回。
希望对您有所帮助! (保持优雅,Oracle...;))
我尝试了上述解决方案,但对我没有用。我找不到 web.config 文件,而是我根据上述建议修改了 App.config 文件。
各位,
我在 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(即使我不相信我的数据库中有任何可以量化的东西,但我有时会遇到初始化程序异常。
您可能需要从 .edmx
文件中删除您的模型并重新添加它。
但这会解决您的问题,您的 JSON 将不再以小数形式返回。
希望对您有所帮助! (保持优雅,Oracle...;))
我尝试了上述解决方案,但对我没有用。我找不到 web.config 文件,而是我根据上述建议修改了 App.config 文件。