繁体   English   中英

在包含的对象上使用包含扩展

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM