Linq使用Include加载关联属性时如何同时加载Contact的Role与Company属性
解决方案
你只需要额外添加一条关联加载链指定加载Contact下的Company属性即可,EF Core支持同时声明多个关联加载路径,所有显式指定的导航属性都会被正确加载。
写法1:兼容所有EF Core版本
query = db.Persons.Include(entity => entity.ContactRelations) .ThenInclude(relation => relation.Contact) .ThenInclude(contact => contact.Role) .Include(entity => entity.ContactRelations) .ThenInclude(relation => relation.Contact) .ThenInclude(contact => contact.Company);
写法2:EF Core 5.0及以上版本支持的简化写法
EF Core 5.0 新增了同层级导航属性并行加载的语法,不需要重复写上层关联路径:
query = db.Persons.Include(entity => entity.ContactRelations) .ThenInclude(relation => relation.Contact) .Include(contact => contact.Role) .Include(contact => contact.Company);
内容的提问来源于stack exchange,提问作者Luka
相关产品推荐
相关产品推荐

