EF 4.1 DBContext - 应用过滤器加载相关实体

时间:2013-02-01 20:35:25

标签: entity-framework entity-framework-4 dbcontext

我正在使用EF 4.1 DBContext API,我正在尝试加载名为User的父实体,然后使用Project过滤器显式加载相关的.Where(x => x.IsEnabled)实体:< / p>

我在“明确加载相关实体时应用过滤器”下找到了建议的方法here。但我无法弄清楚为什么user.Projects没有被填充。使用SQL事件探查器,我已经验证我正在查询Projects并返回数据。但它没有加载到我的用户对象中。

有什么想法吗?

这是我的代码:

    public User GetUser(string userName)
    {
        try
        {
            using (var context = new Entities())
            {
                var user = context.Users.FirstOrDefault(x => string.Compare(x.UserName, userName, true) == 0);

                context.Entry(user).Collection(x => x.Projects).Query().Where(x => x.IsEnabled).Load();

                //TODO: I expect user.Projects.Count() > 0.
            }
        }
        catch (Exception ex)
        {
            LogWrapper.DumpException(ex);
        }

        return null;
    }

2 个答案:

答案 0 :(得分:0)

 User.projects = context.projects.select(x => x.user).where(x => x.isenabled);

答案 1 :(得分:0)

最近遇到了这个问题,这就是我所做的。希望你觉得它很有用。

var query = context.User.Where(x => x.UserName == userName)
            .Include(x => x.Projects.All(p => p.IsEnabled == true))

var data = query.ToList();