您的位置:澳门新葡萄京最大平台 > 澳门新葡萄京 > 步骤及遇到的问题

步骤及遇到的问题

发布时间:2019-11-30 06:27编辑:澳门新葡萄京浏览(134)

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

    于是乎决定晋级到ef6,在oracle官方网站中查出,Oracle Data Provider for .NET in ODAC 12c Release 3 最初匡助ef6(

    安装步骤:

    1.安装odac,下载地址

    2.数据层项目标.net版本改成4.5上述,使用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卡塔尔(英语:State of Qatar)和number(2,0卡塔尔(英语:State of Qatar)类型的字段生成的实业性质的类型会是int16,然后运转的时候报映射不包容的荒诞(错误代码2019)。

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

    SSDLToOracle.tt模板生成的属性的门类是number(1,0卡塔尔(英语:State of Qatar)对应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

    本文由澳门新葡萄京最大平台发布于澳门新葡萄京,转载请注明出处:步骤及遇到的问题

    关键词:

上一篇:没有了

下一篇:没有了