在我的解决方案的几个项目中安装和卸载 EF 6.1.3 后,当我想使用它时,我遇到了以下问题:
找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
我使用工作单元模式包装了 EF ,以避免在其他项目中引用 EF 程序集。
我一直在研究 SOen 以下问题,但他们无法解决我的问题:
- 找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序
- 找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。
- 无法加载实体框架提供程序类型?
- 错误:找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序
我选择不应用以下解决方案,因为在我看来,它们对它们的实施提出了质疑并且是绕开的:
- 将程序集加载到 Java;通过调用提供者实例。
- 在初始项目中引用 EF 及其提供者。
- 制作文件的编译后副本
EntityFramework.SqlServer.dll
经过大量的摆弄,我通过删除解决方案中
app.config
每个项目中的 EF 相关条目来解决它,除了我实现Code First的地方。显然,当 EF 想要加载SqlServer提供程序程序集时,它会在项目中查找这样的程序集,它具有提供程序定义以及进行初始调用(调用堆栈上的第一次调用)的位置。就我而言,这是我在表示层中拥有 Windows 窗体的项目。
不过,在我弄清楚这一点之前,请仔细阅读以下清单,以便我可以解决其间的潜在问题。
之后,我继续重新安装 EF:
Install-Package EntityFramework
EntityFramework.SqlServer
制作本地副本。