我目前有两个项目的解决方案。
一个名为domain的空白项目,其中安装了ef。
现在我有一个使用域项目的c#表单项目。
当我从teh表单调用域项目时,我收到以下错误:
其他信息:找不到实体框架提供商 具有不变名称'System.Data.SqlClient'的ADO.NET提供程序。使 确保提供商在“entityFramework”部分注册 应用程序配置文件。看到 http://go.microsoft.com/fwlink/?LinkId=260882了解更多信息。
我是否需要在表单项目上安装EF?
以下是我的域项目中的一个类:
/// <summary>
/// Provides Operations to the databse regarding all Service History Requests
/// </summary>
public class EFServiceStatusHistoryRepository
{
public void SubmitEntry(int ServiceId, string Status, string Messages, DateTime LastUpdated)
{
try
{
ServiceStatusHistory tmp = new ServiceStatusHistory();
using (var db = new EFDbContext())
{
tmp.Service = db.Services.Find(ServiceId);
tmp.Status = (ServiceStatus)Enum.Parse(typeof(ServiceStatus), Status);
tmp.SetMessages(Messages);
tmp.time = DateTime.Now;
tmp.LastUpdateTime = LastUpdated;
db.ServiceStatusHistory.Add(tmp);
db.SaveChanges();
}
}
catch
{
}
}
}
然后我在表单项目中调用它:
EFServiceStatusHistoryRepository service = new EFServiceStatusHistoryRepository();
service.SubmitEntry(bla,bla,bla);
我理解只有DOMAIN项目需要安装EF。因为我调用的函数在该项目中完成所有EF工作,然后将List返回到表单项目?
答案 0 :(得分:0)
尝试在Package Manager控制台上运行以下命令(工具 - &gt; Library Package Manager-&gt; Package Manager控制台)
PM> Install-Package EntityFramework
或尝试将以下配置添加到您的web.config文件
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
答案 1 :(得分:0)
我认为你是从EF6开始做的;几天前,当我使用Nuget在我的一些项目中更新EF时,我有a very similar problem。
同一问题的其他答案表明了相同的结论。