Entity framework 在EF5/6中包含导航属性的导航属性
这是我现有的代码,它获取一个用户并获取他的组Entity framework 在EF5/6中包含导航属性的导航属性,entity-framework,entity-framework-5,entity-framework-6,Entity Framework,Entity Framework 5,Entity Framework 6,这是我现有的代码,它获取一个用户并获取他的组 User user = new FetchUserByUsernameServiceCommand(Username, Context).Execute(); var groupList = user.JoinedGroups.ToList<Group>(); return groupList; User User User=new fetchUserByUserNamesServic
User user = new FetchUserByUsernameServiceCommand(Username, Context).Execute();
var groupList = user.JoinedGroups.ToList<Group>();
return groupList;
User User User=new fetchUserByUserNamesServiceCommand(用户名,上下文)。Execute();
var groupList=user.JoinedGroups.ToList();
返回群组列表;
每个组
都有一个导航属性图像
,该属性有一个图像URL
我想将每个组的图像
包含在组列表
中,但是包含
在Lis组列表
中不可用,因为它未附加到上下文
如何为每个组
包含图像
导航属性?您可以扩展命令类和构造函数以接受导航属性的表达式,包括:
private string _userName;
private MyContext _context;
private Expression<Func<User, object>>[] _includes;
public FetchUserByUsernameServiceCommand(string userName,
MyContext context, params Expression<Func<User, object>>[] includes)
{
_userName = userName;
_context = context;
_includes = includes;
}
public User Execute()
{
IQueryable<User> query = _context.Users;
if (_includes != null)
{
foreach (var include in _includes)
query = query.Include(include);
}
return query.SingleOrDefault(u => u.UserName);
}
或您可以使用显式加载:
User user = new FetchUserByUsernameServiceCommand(
Username, Context)
.Execute();
var groupList = Context.Entry(user).Collection(u => u.JoinedGroups).Query()
.Include(g => g.Image)
.ToList();
return groupList;
请注意,只有第一个选项是即时加载,即用户加组加图像在单个数据库请求中一起加载。第二个选项(显式加载)将运行两个数据库查询—第一个选项仅加载命令执行器中的用户
对象,第二个选项为该用户加载组和图像。能否为“组”模型放置代码段?
User user = new FetchUserByUsernameServiceCommand(
Username, Context)
.Execute();
var groupList = Context.Entry(user).Collection(u => u.JoinedGroups).Query()
.Include(g => g.Image)
.ToList();
return groupList;