4

我是 EF 新手,我从 EF5 开始。

按照Entity Framework 5 的性能注意事项的建议,2.4.2 将模型移动到单独的程序集...我创建了一个单独的项目(我将其称为 EfPrj)来管理我的 Db 上下文(称为 MyDbContext)。

在我的域层(我将其称为 DomainPrj)中,我使用来自 EfPrj 的实体。问题是在 DomainPrj 中我看不到从 DbContext 继承的 MyDbContext 的成员。

例如,如果我想更新表用户,代码是:

void UpdateUser(User u)
{
    MyDbContext db = new MyDbContext();
    //whatever is needed
    db.SaveChanges();
}

但是在 EfPrj 中它可以正常工作。在 DomainPrj 我看不到成员函数 SaveChanges(),得到这个错误:

'MyDbContext' does not contain a definition for 'SaveChanges' and no extension method 'SaveChanges' ... could be found (are you missing a using directive or an assembly reference?)

更新: EfPrj 仅是一个具有 ORM 数据库优先模型的项目。MyDbContext 默认定义为 EF5 对象: public partial class MyDbContext : DbContext { public MyDbContext() : base("name=MyDbEntities") { }

所以派生自 DbContext 并且是公共的。DomainPrj 引用 EfPrj 并且MyDbContext db = new MyDbContext()可以正常工作。

4

2 回答 2

12

您是否尝试过从 DomainPrj 引用 EntityFramework?

由于这些方法是在 DbContext 中定义的,而 DbContext 是在 EntityFramework 中定义的,因此您必须引用它。

通常,如果您不仅要使用类,还要使用程序集中定义的委托、方法、属性等;您必须引用该程序集。

于 2013-01-14T16:37:00.527 回答
0

对我来说,我必须添加 Microsoft.Data.Services.Client.dll

于 2015-06-06T18:44:12.820 回答