2014-10-30 95 views
3

我有Windows 8.1 64位與Visual Studio 2013.我已經安裝了最新的Oracle ODAC 12c第3版32位測試版,聲稱支持EF 6.當我將ADO.NET實體框架添加到我的項目並選擇我的Oracle數據連接,它不允許我選擇Entity Framework 6.0版本。它選擇了Entity Framework 5.x,版本6.x變灰。它說'與您的數據連接找不到最新版本的實體框架兼容的實體框架數據庫提供程序'。這是爲什麼?Oracle ODAC 12c第3版32位測試版支持EF 6.x?

回答

7

我做了以下,使其工作: -

先安裝ODAC 12C第3版,其中包括對實體框架6碼第一,代碼第一次遷移的支持; NuGet,.NET Framework 4.5.2;和ODP.NET,託管驅動程序XML DB。按照

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

添加兩個引用,我的項目引用,他們是:

Oracle.ManagedDataAccess.dll

Oracle.ManagedDataAccess.EntityFramework.dll

安裝EF6。 1.1通過在軟件包管理器控制檯中運行以下命令來使用NuGet(您可以通過工具 - > NuGet軟件包管理器 - >軟件包管理器控制檯輸入):

Install-Package EntityFramework -Version 6.1.1 

和修改您的web.config或web.config中使用Oracle.ManagedDataAccess,通過增加供應和有效的連接字符串如:

<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" /> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    </configSections> 
    <entityFramework> 
    <contexts> 
     <context type="App.Context.Default, App.Context"> 
     <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
    <connectionStrings> 
    <add name="Default" providerName="Oracle.ManagedDataAccess.Client" connectionString="DATA SOURCE=XE;USER ID=User" /> 
    </connectionStrings> 

重新構建應用程序爲X86,並開始使用EF6,你可以通過使用ADO.Net實體模型添加一個模型來檢查它是否工作,使用Code First

+0

這對我很有用!謝謝您的幫助。 – PKonstant 2015-01-13 21:12:35

+0

非常感謝。這爲我節省了很多時間! – 2015-02-23 13:42:47

+0

對我來說,關鍵是Oracle.ManagedDataAccess.EntityFramework nuget包會安裝已過期的Entity Framework V6.0.0。 剛剛運行: Update-Package EntityFramework 修復了這個問題。 – 2015-03-23 17:17:18

0

您是否從此文件安裝:ODAC121010Beta2_32bit.zip然後選擇安裝Oracle Developer Tools?

它是該頁面上唯一包含用於Visual Studio的開發人員工具的文件,必須針對設計時EF工作進行更新。

0

將Oracle.ManagedDataAccess.EntityFramework.dll特定版本設置爲True並重建您的應用程序。然後嘗試添加ADO.NET實體嚮導再次

相關問題