金沙澳门官网登录-www.js8.com-金沙澳门官网下载app

步骤及遇到的问题——使用ef6创建oracle数据库的

步骤及遇到的问题——使用ef6创建oracle数据库的实体模型。缓慢解决方案中的数据层项目开始时期使用的是oracle 11g + ef5 创制的实人体模型型,在分页时蒙受了skip参数为0报错的难点,没有找到有关材料。

于是乎决定进级到ef6,在oracle官方网址中查出,Oracle Data Provider for .NET in ODAC 12c Release 3 开端扶植ef6(

步骤及遇到的问题——使用ef6创建oracle数据库的实体模型。设置步骤:

1.安装odac,下载地址

步骤及遇到的问题——使用ef6创建oracle数据库的实体模型。2.步骤及遇到的问题——使用ef6创建oracle数据库的实体模型。数据层项目的.net版本改成4.5之上步骤及遇到的问题——使用ef6创建oracle数据库的实体模型。,使用nuget安装 EntityFramework 6 +Oracle.ManagedDataAccess +Oracle.ManagedDataAccess.EntityFramework,都安装新型稳定版。

安装后app.config和web.config都会被投入如下配置项

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <publisherPolicy apply="no" />
        <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>

在乎 entityFramework和 system.data中的版本号,nuget安装后自动生成的相符没难点,笔者在设置在此以前把网络找的资料里的布局项放在中间了,可是版本号不相通,程序运营不了,平昔没在意到版本号,

找了好一会才发觉是那三个地点。

3.然后就能够加上实人体模型型了。这时候只要vs中显得找不到与ef6 宽容的实体框架提供程序,须要将配备文件中的ef节的 <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />删掉恐怕注释掉,保存后再重新尝试增加实人体模型型。

累积实人体模型型时索要先不选取数据Curry的表,即生成航空模型型,然后展开edmx文件,在模型浏览器中选中实人体模型型,在性质中把DDL生成模板改成SSDLToOracle.tt (VS),数据库生成专业流改成Generate Oracle Via T4 (TPT).xaml (VS)。

那般做的原由是朝气蓬勃旦DDL生成模板使用暗中认可项SSDLToOracle.tt ,oracle中的number(1,0)和number(2,0)类型的字段生成的实业性质的体系会是int16,然后运维的时候报映射不合营的错误(错误代码2019卡塔尔。

报错原因是oracle从ODP.NET 12.1.0.2发端为ef6利用新的暗中认可类型映射,官方网址证实 New Default Mappings 段。

SSDLToOracle.tt模板生成的习性的体系是number(1,0)对应boolean,number(2,0)对应byte,那一个相应关系与新映射是同大器晚成的。

附上ef5的映射

Oracle Type Default EDM Type Custom EDM Type
Number(1,0) Int16 bool
Number(2,0) to Number(3,0) Int16 byte
Number(4,0) Int16 Int16
Number(5,0) Int16 Int32
Number(6,0) to Number(9,0) Int32 Int32
Number(10,0) Int32 Int64
Number(11,0) to Number(18,0) Int64 Int64
Number(19,0) Int64 Decimal

本文由金沙澳门官网登录发布于www.js8.com,转载请注明出处:步骤及遇到的问题——使用ef6创建oracle数据库的

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。