使用EF6連接到SQL Server

entity-framework entity-framework-6

高達EF5,為了連接到SQL Server 2012,我需要的是指定一個如下所示的連接字符串:

Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True

此方法不適用於EF6,給出異常

找不到'System.Data.Odbc'ADO.NET提供程序的實體框架提供程序。確保提供程序已在應用程序配置文件的“entityFramework”部分中註冊

我根本沒有使用app.config文件,我將上面的連接字符串傳遞給MyContext構造函數。它是什麼嘗試使用Odbc提供程序,而不是使用System.Data.SqlClient?

使用EF6代碼優先連接到SQL Server需要做什麼?我確保EntityFramework.dll和EntityFramework.SqlServer.dll都在Application文件夾中可用。我甚至在WPF項目中添加了EF6 nuget包v6.0.0.1,雖然它不直接使用EF庫,並確保將自動創建的App.Config文件(由nuget)複製到Application(Debug)文件夾 - 仍然沒有成功。

我還嘗試在代碼中手動setprovider:

Data Source=.\SqlExpress;Initial Catalog=MyDatabase;Integrated security=True;MultipleActiveResultSets=True

仍然沒有成功。我的項目結構如下(簡化):

WPF項目 - 沒有引用EF(也嘗試添加EF引用)

ViewModel類庫 - 沒有引用EF

模型類庫 - 引用EF庫(兩個dll)

數據類庫 - 引用UI庫(兩個dll)。

我正在使用CodeFirst方法,這個設置對EF5沒有任何問題。任何幫助是極大的讚賞。

一般承認的答案

對我來說,通過刪除Glimpse.ADO包解決了這個錯誤

編輯2013年12月20日我相信Glimpse.ADO包現在支持EF6,但我還沒有測試過。


熱門答案

我有同樣的問題,我最終嘗試了以下它,它工作(保持Glimpse EF5和Glimpse ADO包)

在web.config中,我添加了現有提供程序行的副本,但將其invariantName更改為“System.Data.Odbc”。

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.Odbc" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

希望這會有所幫助。

喬納森




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因