实体框架与Oracle - Edmmapping

时间:2016-02-03 09:42:50

标签: c# oracle entity-framework-6

我正在使用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>

我在这个街区尝试了不同的东西,但没有任何改变。还有其他我需要配置的东西吗?

2 个答案:

答案 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)的属性,打开“属性”,然后将“类型”更改为所需的类型。