我正在使用Oracle遗留数据库上的Entity Framework 6。 EF将例如Number(1)自动映射为bool或Number(2)映射到byte,但我需要将它们全部映射为Int32。
我已将edmMappings块添加到app.config中,如Oracle所述:https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#BABGBJCI 但它不起作用,它总是生成bool和int16而不是int32
app.config中的我的映射:
<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmNumberMapping>
<add NETType="int32" MinPrecision="1" MaxPrecision="1" DBType="Number" />
<add NETType="int32" MinPrecision="2" MaxPrecision="3" DBType="Number" />
<add NETType="int32" MinPrecision="4" MaxPrecision="5" DBType="Number" />
<add NETType="int32" MinPrecision="6" MaxPrecision="10" DBType="Number" />
<add NETType="int64" MinPrecision="11" MaxPrecision="19" DBType="Number" />
</edmNumberMapping>
</edmMappings>
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>
我在这个街区尝试了不同的东西,但没有任何改变。还有其他我需要配置的东西吗?
答案 0 :(得分:0)
我有同样的问题。我删除了引用&#34; Oracle.ManagedDataAccess&#34;从包中并从Oracle Developer工具(C:\ Program Files(x86)\ Oracle Developer Tools for VS2015 \ odp.net \ managed \ common \ Oracle.ManagedDataAccess.dll)设置对已安装驱动程序的引用。然后是映射。
答案 1 :(得分:0)
如果您还没有这样做:除了edmMappings,我想您还必须更改模型实体中属性的类型。例如。在Visual Studio中,打开模型图(* .edmx),右键单击数据库中类型为Number(X)的属性,打开“属性”,然后将“类型”更改为所需的类型。