【发布时间】:2017-06-13 12:59:31
【问题描述】:
当我有两个实体时:
public class Org : BaseEntity, IEntityBase
{
public string Name { get; set; }
}
public class Portfolio : BaseEntity, IEntityBase
{
public string Name { get; set; }
public int OrganizationId { get; set; }
[ForeignKey("OrganizationId")]
public virtual Org Organization { get; set; }
public bool IsPrivate { get; set; }
}
当我在 web api 控制器中检索投资组合数据时,我可以:dbSet.Include(a=>a.Organization) 加载相关的Org 数据。有没有办法从 Org 内部“反转”这种查找(加载所有具有外键的 Portfolio 到正在查看的 Org)?
当我添加 List<Portfolio> Portfolios {get;set;} 属性时,我遇到了循环引用无限循环:我假设是因为这两个实体相互交叉引用。
我检索数据的方式是这样的:
public virtual IEnumerable<T> AllIncluding(params Expression<Func<T, object>>[] includeProperties)
{
IQueryable<T> query = _context.Set<T>();
foreach (var includeProperty in includeProperties)
{
query = query.Include(includeProperty);
}
return query.AsEnumerable();
}
OrgRepo.AllIncluding(a=>a.Portfolios)
【问题讨论】:
-
您可以在 Org 类中创建一个属性 List
。
标签: c# asp.net-mvc asp.net-core entity-framework-core