【问题标题】:EF5 model in a separate project can't see DbContext methods单独项目中的 EF5 模型看不到 DbContext 方法
【发布时间】:2012-12-28 14:26:53
【问题描述】:

我是 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 对象: 公共部分类 MyDbContext : DbContext { 公共 MyDbContext() : base("name=MyDbEntities") { }

So 派生自 DbContext 并且是公共的。 DomainPrj 引用 EfPrj 和 MyDbContext db = new MyDbContext() 没有问题。

【问题讨论】:

  • MyDbContext 是否派生自 DbContext
  • 您是否在 DomainPrj 中引用了您的 EfPrj 并且您的 DbContext 是公共成员
  • 另一个明显的问题:您是否收到关于引用 EntityFramework 程序集的编译器错误?
  • 只需从您的单独项目中复制 ConnectionString 并粘贴到您的主项目中

标签: c# entity-framework-5


【解决方案1】:

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

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

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

【讨论】:

  • DomainPrj 引用 EfPrj 和 MyDbContext db = new MyDbContext() 没有问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多