实体框架独立项目vs主项目中的实体集

本文关键字:实体 项目 vs 框架 独立 | 更新日期: 2023-09-27 18:05:28

关于在现有项目中添加实体集与在自己的项目中拥有实体集以实现可重用性,似乎发生了一些奇怪的事情。

场景一
项目A是一个类库,添加了EF集并连接到数据库。
在类库项目的默认类中,编写和编译这些代码都很好。

  public void test()
    {
        using (var context = new Accu_CRM_dbEntities())
        {
            var test = context.BillableParts.First(P => P.Id == "test");
        }
    }  

场景两个
项目B是添加到同一解决方案中的另一个项目。对项目A进行引用,以便使用项目b中的标识。将using语句放置在将使用EF集合进行dB调用的代码文件中。同样的代码写入项目B;但是,编译器报错'DAL.Accu_CRM_dbEntities': type used in a using statement must be implicitly convertible to 'System.IDisposable'。除此之外,在处理上下文时失去了所有智能感知支持。

如果我输入context.BillableParts.,则在实体名称后停止智能感知支持。到底是什么原因导致项目B看不到Accu_CM_dbEntities应该像项目A那样是一次性的?

namespace DAL
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class Accu_CRM_dbEntities : DbContext
{
    public Accu_CRM_dbEntities()
        : base("name=Accu_CRM_dbEntities")
    {
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    public virtual DbSet<BillablePart> BillableParts { get; set; }
    public virtual DbSet<BillableService> BillableServices { get; set; }
    public virtual DbSet<Customer> Customers { get; set; }
    public virtual DbSet<Part> Parts { get; set; }
    public virtual DbSet<PartsManufacturer> PartsManufacturers { get; set; }
    public virtual DbSet<WorkOrder> WorkOrders { get; set; }
}

}

实体框架独立项目vs主项目中的实体集

也许更多关于数据库的信息会更有用一些。我使用SQL server compact。我使用nuget并在我的消费项目(EF项目的消费者)中安装了EF for sql compact,一切都修复了。我不能100%确定到底是什么问题,但显然我没有正确的库引用。我把这个留在这里给其他可能出现这个错误的人看