我们先使用Entity Framework数据库作为Oracle数据库。
由于某些原因,Number(5)
变为Int16
-short
最大Number(5)
值是99999Int16
的最大值为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>
`