c# - 单独项目中的 EF5 模型看不到 DbContext 方法

标签 c# entity-framework-5

我是 EF 的新手,我刚开始使用 EF5。

遵循 Performance Considerations for Entity Framework 5 的建议, 2.4.2 将模型移动到单独的程序集...我创建了一个单独的项目(我将其称为 EfPrj)来管理我的 Db 上下文(称为 MyDbContext)。

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

例如,如果我想更新一个表 Users,代码是:

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("名称=MyDbEntities") {

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

最佳答案

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

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

一般来说,如果您不仅要使用类,还要使用在程序集中定义的委托(delegate)、方法、属性等;您必须引用该程序集。

关于c# - 单独项目中的 EF5 模型看不到 DbContext 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14321648/

相关文章:

c# - 有人可以向我解释这段代码吗?

C# 在 WinForms 组合框中突出显示文本

.net - EF 5 中的可插入约定?

entity-framework - EF5代码第一个枚举和查找表

c# - 桌面应用程序中本地数据库的 C# 连接字符串

linq - 如何确定哪些 Linq 函数不会多次调用 sql?

c# - 如何在一个 Jenkins 项目中运行多个 NUnit 测试项目?

c# - 在引用中找不到 System.Drawing.dll

c# - IIS6 应用程序池状态

c# - Include 返回的 Entity Framework 限制属性