实体框架-只加载导航属性中的某些行

本文关键字:属性 框架 -只 加载 导航 实体 | 更新日期: 2023-09-27 18:26:02

我有类

Address
PeopleAddress    //join table with a column called current
People           // my main table, with a IList<PeopleAddress>
modelBuilder.Entity<People>()
            .HasMany<PeopleAddress>(m => m.CurrentAddresses)
            .WithRequired()
            .HasForeignKey(m => m.PeopleId);

我(总是)只想在PeopleAddress.Current==1的人中加载PeopleAddress。应用程序不需要PeopleAddress.Current==0的行。我该如何做到这一点?这可能吗?非常感谢。

PS:我不能不使用Include,因为上下文在很多地方都是实例化的,我需要在OnModelCreating(DbModelBuilder modelBuilder)

实体框架-只加载导航属性中的某些行

中执行

为了实现这一点,应该禁用延迟加载,以便您完全控制加载的数据。

对PeopleAddress表执行查询,并确保通过PeopleAddress中的导航属性也加载了People数据。

public virtual People People { get; set; }
PeopleAddress.Include(pa => pa.People).Where(pa => pa.Current == 1)

试试

context.People.Include("PeopleAddress")
              .Select(t=> new { t,
                                PeopleAddress= t.PeopleAddress
                                                .Where(p=>p.Current==1)});