通用实体框架项目“找不到 ADO.NET 提供程序的实体框架提供程序”
本文关键字:程序 找不到 框架 实体 NET ADO 项目 | 更新日期: 2023-09-27 18:33:47
所以我查看了具有相同错误的条目,要么不是同一个问题,要么我不理解它。
我有一个包含多个项目的解决方案。 他们使用通用Entity Frame Work 6
并将其包含在引用中。 WCF
项目使用Entity Frame
从数据库中获取数据效果很好。但是我的控制台应用程序给了我,
找不到 ADO.NET 提供程序的实体框架提供程序 不变名称"System.Data.SqlClient"
执行调用Entity Framework
的相同代码时。
我想我在.config
文件中缺少某些内容,但我的连接字符串都是一样的。
实体框架应用配置:
<configuration>
<connectionStrings>
<add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string="data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
WCF Web.config:
<configuration>
<connectionStrings>
<add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string="data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
控制台应用配置:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="SafetyPortalEntities" connectionString="metadata=res://*/EntityModels.SafetyPortalModel.csdl|res://*/EntityModels.SafetyPortalModel.ssdl|res://*/EntityModels.SafetyPortalModel.msl;provider=System.Data.SqlClient;provider connection string="data source=ndmasdev;initial catalog=SafetyPortal;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
可以使用包管理器控制台(工具->Nuget 包管理器->包管理器控制台)并将实体框架添加到控制台应用
install-package entityframework
请务必在包管理器控制台的"默认项目"下拉列表中选择控制台应用。
在经历了许多挫折之后,我终于弄清楚出了什么问题。
WCF 项目会自动在引用中包含对实体框架的引用,以便它正常工作。
控制台应用程序没有 EF 引用,但在尝试添加新引用时,它不会显示在选项列表中的任何位置,并且包括其他项目不包括 EF 引用。(我不知道为什么) 因此,我从 EF 项目中的引用中选择"实体框架",复制了它的路径,然后使用 EF 项目中的路径在控制台项目引用中进行了浏览添加。
必须有一个更好的解决方案,如果你发布它,我会选择你的作为答案。