繁体   English   中英

如何获得具有通用存储库模式的所有子集合?

[英]How do I get all child collection with generic repository pattern?

我正在使用EF Core 2.1,并且在我的域中有这些类。

public class HomeSection2
{
    public HomeSection2()
    {
        HomeSection2Detail = new List<HomeSection2Detail>();
    }

    public Guid ID { get; set; }
    public string Title { get; set; }
    public string Header { get; set; }

    public List<HomeSection2Detail> HomeSection2Detail { get; set; }
}

public class HomeSection2Detail
{
    public Guid ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Link { get; set; }
    public int? Sequence { get; set; }

    public HomeSection2 HomeSection2 { get; set; }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.RemovePluralizingTableNameConvention();

    //HomeSection2
    modelBuilder.Entity<HomeSection2>().HasKey(s => s.ID);
    modelBuilder.Entity<HomeSection2>().Property(s => s.ID).ValueGeneratedOnAdd();
    modelBuilder.Entity<HomeSection2>().Property(s => s.Title).IsRequired();
    modelBuilder.Entity<HomeSection2>().Property(s => s.Header).IsRequired();

    //HomeSection2Detail
    modelBuilder.Entity<HomeSection2Detail>()
        .HasOne(p => p.HomeSection2)
        .WithMany(b => b.HomeSection2Detail);
    modelBuilder.Entity<HomeSection2Detail>().HasKey(s => s.ID);
    modelBuilder.Entity<HomeSection2Detail>().Property(s => s.ID).ValueGeneratedOnAdd();
    modelBuilder.Entity<HomeSection2Detail>().Property(s => s.Title).IsRequired();
    modelBuilder.Entity<HomeSection2Detail>().Property(s => s.Sequence).IsRequired();
}

我有一个通用的仓库

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
    protected readonly DbContext Context;

    public Repository(DbContext context)
    {
        Context = context;
    }

    public IEnumerable<TEntity> GetAll()
    {
        return Context.Set<TEntity>().ToList();
    }
}

当我像这样从应用程序中调用GetAll var obj = _uow.HomeSection2s.GetAll() ,它不会填充Detail。

您的意思被称为“延迟加载”。 它将要求您将这些属性虚拟化,例如:

public virtual List<HomeSection2Detail> HomeSection2Detail { get; set; }

你也可以看看这个anwser

有关加载相关数据的更多文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM