【发布时间】:2021-09-18 12:33:54
【问题描述】:
我的对象有我想要访问的关系数据属性:
public class Person
{
public ICollection<Address> Addresses { get; private set; } = new Collection<Address>();
...
}
public class Address
{
...
public int PersonId { get; set; }
public Person Person { get; set; }
...
}
我发现在没有延迟加载(以及拉入代理等)的情况下遍历甚至锻炼此导航属性的唯一方法是急切加载它:
var entityList = await _context.Persons.Where(p => p.Id == request.PersonId)
.Include(p => p.Addresses)
.ToListAsync();
这很不方便,因为现在我总是必须执行以下操作才能干净地访问类(及其属性):
var person = entityList.FirstOrDefault();
Microsoft docs 中的每个示例:
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ToList();
在加载相关数据之前,它们会抓取每个博客实体,而不仅仅是一个实体。
我无法显式加载,因为这依赖于我无法通过注入的DbContext 接口访问的public virtual EntityEntry<TEntity> Entry<TEntity>(TEntity entity)。
如果没有 IQuerable where 表达式,是否有更简洁的方法来执行此操作?我只是想找到我的单个实体并浏览它的属性。
【问题讨论】:
-
你不能
_context.Persons..Include(p => p.Addresses).ToListAsync();?
标签: .net entity-framework linq entity-framework-core iqueryable