Oracle 您的项目引用了最新版本的实体框架…-错误

Oracle 您的项目引用了最新版本的实体框架…-错误,oracle,entity-framework,visual-studio,ado.net-entity-data-model,Oracle,Entity Framework,Visual Studio,Ado.net Entity Data Model,我正在尝试使用Oracle创建实体数据模型。我得到了这个错误 我已经为我的解决方案安装了这些 我还为VS 2015安装了ODT 这些是我的推荐信 Web.config <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFram

我正在尝试使用Oracle创建实体数据模型。我得到了这个错误

我已经为我的解决方案安装了这些

我还为VS 2015安装了ODT

这些是我的推荐信

Web.config

<configSections>
    <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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<connectionStrings>
    <add name="OracleDbContext" 
         providerName="Oracle.ManagedDataAccess.Client" 
         connectionString="User Id=system;Password=myPassword;Data Source=ABC_DB" />
</connectionStrings>
<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
</system.web>
<system.webServer>
   <modules>
       <remove name="FormsAuthentication" />
   </modules>
</system.webServer>
<runtime>
 ........
</runtime>
<entityFramework>
    <defaultConnectionFactory  
         type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework">
    </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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />-->
        <provider invariantName="Oracle.ManagedDataAccess.Client" 
                  type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
</entityFramework>
<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
</system.codedom>
<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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
</system.data>
<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>

........

我缺少什么?

您必须转到项目-->属性-->编译-->并将平台设置为x86

保存所有更改,重建,添加实体数据模型,现在它就可以工作了

这件事在我们的工作中发生过很多次

这是因为ODT是32位的,您的项目可能在AnyCpu或x64中,而您的操作系统是x64


希望它有助于安装Entity Framework(如果未安装),请重建项目并添加新连接。它为我解决了这个问题。

我通过将实体框架更新为6.1.3,将Oracle托管数据访问更新为12.1.24160719,将Oracle托管数据访问实体框架更新为12.1.2400,成功地解决了这个问题。请使用nuget manager进行更新。在这之后,它工作了

VS 2017和Oracle 12c存在“您的项目引用了最新版本的实体框架”问题 当我们添加带有Oracle连接的ADO.NET实体数据模型项时,错误消息显示“您的项目引用最新版本的实体框架…”

解决步骤如下

  • 将Oracle ODTwithODAC122010安装为32位

  • 在VS2017中创建您的项目

  • 将活动解决方案平台从任意CPU更改为32位

  • 打开工具->Nuget PackageManager->管理解决方案的Nuget软件包

  • 5-写入浏览区域“ODP”并安装以下程序

    • 甲骨文。ManagedDataAccess

    • Oracle.ManagedDataAccess.EntityFramework

    6-打开工具->Nuget PackageManager->软件包管理器控制台

    7-写下这个

    - Install-Package EntityFramework -Version 6.1.1  
    
    and Enter
    
    8-重新启动Visual Studio以完成此过程

    8-重新构建您的应用程序

    8-添加新项ADO.NET实体数据模型

    9-如果需要,添加到Oracle的新连接(数据源=Oracle数据库(ODP.NET,托管驱动程序))

    10-一切都好

    注:I quess EF6.1.3不适用于VS2017和Oracle ODTwithODAC122010。但在所有这些过程之后,我已经将EF更改为EF6.1.3,它正在工作
    但是我不建议你。我今天遇到了这个问题。然后我通过以下步骤解决:

    <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" />
      </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="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
      </entityFramework>
    <system.data>
        <DbProviderFactories>
          <remove invariant="MySql.Data.MySqlClient" />
          <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>
    
    通常情况下,如果我们想在实体框架中使用MySQL,我们会添加一些DLL,比如MySQL.Data、MySQL.Data.Entity.EF6

    但是我们忘记了一件事,VisualStudio需要使用MySQL

    正在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" />
      </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="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers>
      </entityFramework>
    <system.data>
        <DbProviderFactories>
          <remove invariant="MySql.Data.MySqlClient" />
          <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>
    
    
    
    然后,构建整个项目并重试

    另一个解决方案是:使用Nuget添加MySQL DLL。它将被添加到App.config/Web.config文件中,如下所示 在web.config中添加以下内容为我解决了这个问题

    在配置文件中设置DbConfiguration类型:

    <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
    

    我的电脑: Win7 64位

    VS 2015

    Oracle服务器:

    版本12G-32位

    我在成功之前所做的努力:

    -将Oracle.ManagedDataAccess.EntityFramework和Oracle.ManagedDataAccess从18.3.0降级至12.2.20190115

    -将构建模式从任何CPU更改为x86

    -配置app.config:

      <configSections>
        <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    
        <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="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework"></defaultConnectionFactory>
        <providers>
          <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>
    
    
    
    -Nuget已安装: Oracle.DataAccess.x86-v.2.112.1

    Oracle.ManagedDataAccess.EntityFramework-v.12.2.20190115

    Oracle.ManagedDataAccess-v.12.2.1100

    EntityFramework-v.6.2.0


    安装了ODAC:ODTwithODAC122011.zip以下链接帮助了我。。。


    在我的例子中,重点是小心地添加引用,保持版本一致,并相应地更新配置文件。

    首先删除模型,删除两个实体框架引用。
    之后,添加模型并在package manager控制台中编写:


    安装包EntityFramework

    我不知道。。现在我陷入了另一个错误,“听众现在不知道……”。我不记得我做了什么改变。我所要做的就是让MVC应用程序运行Oracle db with db first方法。我使用的是VS 2015,它也得到了Oracle的官方支持。但却不能让它运行。这太愚蠢了。我想我应该转向sql server。甲骨文真的对这么多乱七八糟的东西感到沮丧。一开始有点棘手,但一旦你配置了它的属性,它就可以正常工作了。与听众相关,你应该检查你的tnsnames.ora文件你读过问题了吗?这是关于Oracle,而不是MySQL,所以这不是一个答案。另外,如果你回答的老问题已经有多个答案,如果你能解释一下你的答案在现有内容中增加了什么,你会很感激的。你读过问题顶部的错误信息了吗?此消息可以出现在许多场景中。事实上,我访问此页面只是因为我在VS 2017(oracle产品)中使用MySQL时收到此错误消息,这是一个连接器问题。在下面的回答中,提到配置给了我提示。我只是试着帮助别人,因为别人的回答帮助了我很多次。有时候,仅仅一个暗示就足够了。不要急于否决其他人的投票,试着看看背后的意图。将活动解决方案平台从AnyCPU更改为32位原因就在于此。将构建从AnyCPU更改为32 B