EF我是否需要在引用已经使用EF的项目的项目中安装它

时间:2014-02-19 11:48:08

标签: c# entity-framework ado.net

我目前有两个项目的解决方案。

一个名为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返回到表单项目?

2 个答案:

答案 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

同一问题的其他答案表明了相同的结论。