![](/img/trans.png)
[英]Cannot use extension method for IDictionary<string, object>
[英]Use Include extension on included object
我正在使用EF和代码。 我创建了一个User对象,其中包含对象Role的列表。 每个Role对象都包含一个Form类型的对象。 我想获取特定用户的所有角色,包括“表单”对象。
为了更好地理解:用户1 <-> n角色1 <-> 1表单
我尝试过这样的事情:
DBContext.Users.Include(u => u.Roles.AsQueryable().Include(i=>i.Form)).ToList().Where(r => r.Username.Equals(id)).FirstOrDefault<User>();
结果是:
包含路径表达式必须引用在类型上定义的导航属性。 使用虚线路径作为参考导航属性,使用“选择”运算符作为集合导航属性。 参数名称:路径
User user = DBContext.Users.Include(u => u.Roles.AsQueryable().Include(i=>i.Form)).ToList().Where(r => r.Username.Equals(id)).FirstOrDefault<User>();
List<Role> roles = user.Roles.AsQueryable().Include(r=>r.Form).ToList();
这不会引发任何异常,但Role对象中不包含Form对象。
如何在包含的对象上使用包含? linq表达式完成后,有没有办法包含“对象”? 谢谢问候
[编辑]为了更好地了解我的模型的外观
public class User
{
//some properties
public virtual List<Role> Roles { get; set; }
}
public class Role
{
//some properties
public virtual Form Form { get; set; }
}
public class Form
{
//some properties
}
您不能在另一个包含中包含一个。 包含linq表达式的子路径的正确方法是使用select
DBContext.Users.Include(u =>u.Roles.Select(i=>i.Form)).ToList()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.