5

我们将 Entity Framework 数据库优先用于我们的 Oracle 数据库。

由于某种原因Number(5)变成Int16-short

最大值Number(5)99999
最大值Int1632767

问题......有没有办法指示映射器翻译Number(5)int32

4

3 回答 3

5

解决了,将此添加到 web.config 中:

<oracle.dataaccess.client>
<settings>
<add name="int16" value="edmmapping number(4,0)" />
<add name="int32" value="edmmapping number(9,0)" />
</settings>
</oracle.dataaccess.client>

使用文件重新创建模型*.edmx并...

现在代替 和代替Number(5)_ _Int32Int16Number(10)Int64Int32

我希望它会在未来对其他人有所帮助......

于 2012-09-10T09:32:06.070 回答
1

对我来说,带有 EntityFramework 的 Oracle 总是导致我必须在生成 edmx 文件后应用一张更改表。

除了更改列的数据类型之外,我建议在 edmx 文件中手动编辑行的类型,并且记住这是每次重新生成时都必须做的事情

于 2012-09-09T14:49:48.840 回答
1

对于Oracle.ManagedDataAccess.Client,我尝试了这项工作,并注意到顶部评论中的问题:

<oracle.manageddataaccess.client>
    <version number="*"> 
      <edmMappings>
        <edmNumberMapping>
          <add NETType="int16" MinPrecision="2" MaxPrecision="4" DBType="Number" />
          <add NETType="int32" MinPrecision="5" MaxPrecision="9" DBType="Number" />
          <add NETType="int64" MinPrecision="10" MaxPrecision="19" DBType="Number" />
          <add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number" />
        </edmNumberMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>

`

于 2019-10-28T06:23:09.967 回答