美高梅网址 > 仙剑奇侠传官网 > 于是决定升级到ef6

原标题:于是决定升级到ef6

浏览次数:51 时间:2019-09-05

于是决定升级到ef6。消除方案中的数据层项目先前时代使用的是oracle 11g + ef5 创制的实人体模型型,在分页时遇见了skip参数为0报错的难点,未有找到有关材质。

于是乎决定升级到ef6,在oracle官方网站中查出,Oracle Data Provider for .NET in ODAC 12c Release 3 起始支持ef6(

安装步骤:

1.安装odac,下载地址

于是决定升级到ef6。2.数据层项目标.net版本改成4.5之上于是决定升级到ef6。于是决定升级到ef6。,使用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

本文由美高梅网址发布于仙剑奇侠传官网,转载请注明出处:于是决定升级到ef6

关键词:

上一篇:说是需要安装匹配的Silverlight Developer

下一篇:没有了