我们将 Entity Framework 数据库优先用于我们的 Oracle 数据库。
由于某种原因Number(5)
变成Int16
-short
最大值Number(5)
为99999
最大值Int16
为32767
问题......有没有办法指示映射器翻译Number(5)
成int32
?
我们将 Entity Framework 数据库优先用于我们的 Oracle 数据库。
由于某种原因Number(5)
变成Int16
-short
最大值Number(5)
为99999
最大值Int16
为32767
问题......有没有办法指示映射器翻译Number(5)
成int32
?
解决了,将此添加到 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
我希望它会在未来对其他人有所帮助......
对我来说,带有 EntityFramework 的 Oracle 总是导致我必须在生成 edmx 文件后应用一张更改表。
除了更改列的数据类型之外,我建议在 edmx 文件中手动编辑行的类型,并且记住这是每次重新生成时都必须做的事情
对于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>
`