Entity Framework生成short而不是int

问题描述 投票:5回答:3

我们先使用Entity Framework数据库作为Oracle数据库。

由于某些原因,Number(5)变为Int16-short

最大Number(5)值是99999Int16的最大值为32767

问题...是否有一种方法可以指示映射器将Number(5)转换为int32

c# .net oracle entity-framework ef-database-first
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)Int32,而不是Int16并且Number(10)Int64而不是Int32

希望以后能对其他人有所帮助...


1
投票

对我来说,使用EntityFramework的Oracle总是导致对edmx文件生成后必须进行一些更改。

除了更改列的数据类型,我建议在edmx文件中手动编辑行的类型,只记得这是您每次重新生成时必须要做的事情


0
投票

对于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>

`

© www.soinside.com 2019 - 2024. All rights reserved.