Evg*_*rov 5 .net c# sql entity-framework
我有3个具有多对多连接的实体(表):
public class AccUserRole
{
public long Id { get; set; }
public string RoleName { get; set; }
public List<AccAdGroup> Groups { get; set; }
public List<AccScreen> Screens { get; set; }
}
public class AccAdGroup
{
public long Id { get; set; }
public string AdIdent { get; set; }
public List<AccUserRole> Roles { get; set; }
}
public class AccScreen
{
public long Id { get; set; }
public string ScreenIdent { get; set; }
public List<AccUserRole> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想获得至少有一个指定的组列表(当前用户的组)的所有角色(包括他们的屏幕和组).所以我使用了这个查询:
List<AccUserRole> userRoles = (from ur in db.AccUserRoles.Include("Groups").Include("Screens")
from g in ur.Groups
where user.Groups.Contains(g.AdIdent)
select ur).ToList();
Run Code Online (Sandbox Code Playgroud)
它得到正确的角色,但是Groups和Screens属性为null.看起来EF有使用Include和第二的问题from.任何有关如何包含属性或重写查询的帮助将不胜感激.
小智 1
尝试将 virtual 关键字添加到类属性中,如下所示:
public class AccUserRole
{
public long Id { get; set; }
public string RoleName { get; set; }
public virtual List<AccAdGroup> Groups { get; set; }
public virtual List<AccScreen> Screens { get; set; }
}
public class AccAdGroup
{
public long Id { get; set; }
public string AdIdent { get; set; }
public virtual List<AccUserRole> Roles { get; set; }
}
public class AccScreen
{
public long Id { get; set; }
public string ScreenIdent { get; set; }
public virtual List<AccUserRole> Roles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)