手续同碰到的问题,步骤及遭逢的题材

解决方案中的数据层项目最初使用的是oracle 11g + ef5,解决方案中的数据层项目最初使用的是oracle 11g + ef5

化解方案面临的数据层项近年来期使用的是oracle 11g + ef5
创制的实体模型,在分页时撞了skip参数为0报错的问题,没有找到有关材料。

化解方案被的数据层项如今期使用的凡oracle 11g + ef5
创建的实体模型,在分页时遭遇了skip参数为0报错的题目,没有找到有关材料。

于是乎决定升级至ef6,在oracle官网中得知,Oracle Data Provider for .NET in
ODAC 12c Release 3
初叶襄助ef6(https://docs.oracle.com/cd/E56485\_01/win.121/e55744/release\_changes.htm\#CIHGIAEG)

于是乎决定升级到ef6,在oracle官网中获知,Oracle Data Provider for .NET in
ODAC 12c Release 3
起初协助ef6(https://docs.oracle.com/cd/E56485\_01/win.121/e55744/release\_changes.htm\#CIHGIAEG)

设置步骤:

安步骤:

1.安装odac,下载地址http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

1.安装odac,下载地址http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

2.数据层项目标.net版本更改化4.5以上,使用nuget安装 EntityFramework
6 +Oracle.ManagedDataAccess
+Oracle.ManagedDataAccess.EntityFramework,都安新型稳定版。

2.数据层项目标.net版本更改化4.5以上,使用nuget安装 EntityFramework
6 +Oracle.ManagedDataAccess
+Oracle.ManagedDataAccess.EntityFramework,都装时稳定版。

设置后app.config和web.config都会合让在如下配置起

装后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>
<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安装后自动生成的形似没问题,我当设置前把网上查找的素材里之安排起在其中了,可是版本号不等同,程序启动不了,一贯没有留意到本号,

只顾 entityFramework和 system.data中的本号,nuget安装后自动生成的一般没有问题,我以设置前把网上搜索的素材里之布置起在其中了,不过版本号不平等,程序启动不了,一贯尚未放在心上到本号,

找了好同一会师才发现是这一点儿个地方。

查找了好同一会才发现凡是顿时有限独地点。

3.然晚尽管可增长实体模型了。此时使vs中显得搜不交跟ef6
兼容的实业框架提供程序
,需要拿配置文件中之ef节的 <provider
invariantName=”System.Data.SqlClient”
type=”System.Data.Entity.SqlServer.SqlProvider瑟维斯(Service)(Service)s,
EntityFramework.SqlServer”
/>删掉或者注释掉,保存后再一次另行尝试添加实体模型。

3.然后即足以增长实体模型了。此时一旦vs中显搜不交跟ef6
兼容的实体框架提供程序
,需要将布文件被的ef节的 <provider
invariantName=”System.Data.SqlClient”
type=”System.Data.Entity.SqlServer.SqlProviderService(Service)s,
EntityFramework.SqlServer”
/>删掉或者注释掉,保存后再又尝试添加实体模型。

累加实体模型时用事先不拣数据库里之申,即生成空模型,然后打开edmx文件,在范浏览器中选中实体模型,在性被拿DDL生成模板改化SSDLToOracle.tt
(VS),数据库生成工作流改化Generate Oracle Via T4
(TPT).xaml
(VS)。

丰硕实体模型时需要先不选拔数据库里之阐发,即生成空模型,然后打开edmx文件,在范浏览器中选中实体模型,在性质被把DDL生成模板改成为SSDLToOracle.tt
(VS),数据库生成工作流改化Generate Oracle Via T4
(TPT).xaml
(VS)。

这么做的因由是设DDL生成模板下默认项SSDLToOracle.tt
oracle中的number(1,0)和number(2,0)类型的字段生成的实业性的类别会是int16,然后运行的时光报映射不兼容的谬误(错误代码2019)。

然做的原故是设DDL生成模板下默认项SSDLToOracle.tt
oracle中之number(1,0)和number(2,0)类型的字段生成的实业性之种会是int16,然后运行的当儿报映射不匹配的荒唐(错误代码2019)。

报错原因是oracle从ODP.NET
12.1.0.2先导吧ef6采取新的默认类型映射,官网证实https://docs.oracle.com/cd/E56485\_01/win.121/e55744/entityDataTypeMapping.htm\#ODPNT8303,其中的 New
Default Mappings 段。

报错原因是oracle从ODP.NET
12.1.0.2起来为ef6运新的默认类型映射,官网证实https://docs.oracle.com/cd/E56485\_01/win.121/e55744/entityDataTypeMapping.htm\#ODPNT8303,其中的 New
Default Mappings 段。

SSDLToOracle.tt模板生成的特性的色是number(1,0)对应boolean,number(2,0)对应byte,这么些相应关系及新映射是一模一样的。

SSDLToOracle.tt模板生成的习性之类别是number(1,0)对应boolean,number(2,0)对应byte,那一个相应关系和新映射是同样的。

附上ef5的映射

附上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
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