在 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) 文件夹 - 仍然没有成功。
我还尝试在代码中手动设置提供者:
public class OeeCoachConfiguration : DbConfiguration
{
public OeeCoachConfiguration()
{
SetProviderServices("System.Data.SqlClient",
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
仍然没有成功。我的项目结构如下(简化):
WPF 项目 - 没有对 EF 的引用(也尝试添加 EF 引用)
ViewModel 类库 - 没有对 EF 的引用
模型类库 - 引用了 EF 库(两个 dll)
数据类库 - 引用了 UI 库(两个 dll)。
我正在使用 CodeFirst 方法,并且此设置对 EF5 没有任何问题。任何帮助是极大的赞赏。