首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >实体框架为Include属性返回null

实体框架为Include属性返回null
EN

Stack Overflow用户
提问于 2014-09-10 19:18:25
回答 2查看 11.9K关注 0票数 5

我有3个具有多对多连接的实体(表):

代码语言:javascript
复制
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; }
}

我想要获取所有角色(包括他们的屏幕和组),这些角色至少有一个指定的组列表(当前用户的组)。所以我使用了这个查询:

代码语言:javascript
复制
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();

它获得了正确的角色,但GroupsScreens属性为空。看起来EF在使用Include和第二个from时遇到了问题。任何关于如何包含属性或重写查询的帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-10 19:26:37

尝试将虚拟关键字添加到类属性中,如下所示:

代码语言:javascript
复制
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; }
}
票数 1
EN

Stack Overflow用户

发布于 2014-09-10 19:47:35

将include移到ToList()之前。

代码语言:javascript
复制
select ur).Include("Groups").Include("Screens").ToList();

子选择可以消除Include效应。

如果正在执行紧急加载,则不需要virtual关键字。通过添加virtual,您使用的是延迟加载,而不是即时加载。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25764005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档