【问题标题】:DBContext does not contain a definition for Entry: Cannot load related dataDBContext 不包含 Entry 的定义:无法加载相关数据
【发布时间】:2021-09-18 11:59:48
【问题描述】:

当尝试加载相关数据并按照Explicit Loading of Related Data 上的指南进行操作时,我收到以下错误:

IApplicationDbcontext 不包含Entry 的定义。

我的示例代码,与他们的类似,包括:

var person = _context.Persons.Single(p => p.PersonId = id);
_context.Entry(person).Collection(p => p.Addresses).Load();

我的情况的不同之处在于我正在注入一个看起来很标准的IApplicationDbContext,我认为这并没有什么不同:

public class ApplicationDbContext : DbContext, IApplicationDbContext
{
   ...
   public DbSet<Person> Persons { get; set; }
   public DbSet<Address> Addresses { get; set; }
   ...
}

我在这个项目中有Microsoft.EntityFrameworkCore 5.0.7

【问题讨论】:

  • EntryDbContext 类的一个虚方法,如果你的_contextIApplicationContext 那么它就不能被调用。 github.com/dotnet/efcore/blob/…
  • @Lowkey 哇,真的吗?长期以来,注入应用程序的数据库上下文一直是常态。这怎么可能行不通?那么关系属性就没有用了吗?

标签: c# .net entity-framework dependency-injection entity-framework-core


【解决方案1】:

您的IApplicationDbContext 必须在其中声明以下方法签名才能工作。

EntityEntry<TEntity> Entry<TEntity>([NotNullAttribute] TEntity entity) where TEntity : class;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多