我是 EF 的新手,我从 EF5 开始。
按照 Performance Considerations for 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)部分类 MyDbContext : DbContext
{
公共(public) MyDbContext()
: base("name=MyDbEntities")
{
}
所以派生自 DbContext 并且是公共(public)的。
DomainPrj 引用 EfPrj 和
MyDbContext db = new MyDbContext()
工作没有问题。 最佳答案
您是否尝试过从 DomainPrj 中引用 EntityFramework?
由于这些方法是在 DbContext 中定义的,而 DbContext 是在 EntityFramework 中定义的,因此您必须引用它。
通常,如果您不仅要使用类,还要使用程序集中定义的委托(delegate)、方法、属性等;您必须引用该程序集。