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和Entity Framework 6:Int32以数字形式返回

好吧,对于其他可能有同样困难的人来说,这似乎会奏效。

如果您使用的是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文件。