如何急切地包含子对象的导航属性
本文关键字:导航 属性 对象 何急切 包含 | 更新日期: 2023-09-27 18:22:05
假设我的对象图看起来像:
User
=> Friends
=> Clicks
=> Urls
所以当我加载一个用户时,我也想快速加载导航属性Friends。我想让朋友对象快速加载点击等等。
使用我现在的代码,我只能在1个级别上做到这一点:
public User GetUserById(int userId)
{
return Get(x => x.Id == userId, includeProperties: "Friends").FirstOrDeafult();
}
这可能吗?
- 我使用的是MVC 4.1
- 我目前使用的存储库模式基于http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
显然,这个存储库实现只是用逗号(includeProperties.Split(new char[] { ',' }
)分割includeProperties
参数,然后调用
query = query.Include(includeProperty);
对于分割的结果数组中的每个元素。对于您的示例,您可以使用虚线路径,然后:
return Get(x => x.Id == userId, includeProperties: "Friends.Clicks.Urls")
.FirstOrDefault();
它将加载从根User
实体到最后一个导航属性Urls
的路径上的所有实体。
如果你在User
中有另一个导航属性,比如Profile
,并且你也想急切地加载它,那么似乎支持这种语法:
return Get(x => x.Id == userId, includeProperties: "Profile,Friends.Clicks.Urls")
.FirstOrDefault();