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 文件。