0

我在 LINQ 中的 .include 周围遇到了一些问题。如果有人可以向我展示实现此目的的查询,我将不胜感激:

我有两个实体,用户和验证(这是一系列验证代码)。它们在 EF5 中关联为 1:*。我正在尝试获取一个 User 对象并急切地加载 Validations 集合。

此刻,我正在这样做(cx 是 using 块内的 Context):

var user = cx.Users
            .Where(u => u.UserGuid.Equals(UserGuid))
            .FirstOrDefault();

if (user == null)
{
    return 0;
}

var validation = cx.Validations
            .Where(v => v.Code.Equals(Code))
            .Where(v => v.UserId.Equals(user.UserId))
            .FirstOrDefault();

但是我如何仅在一个查询中实现这一点,以便我可以使用

user.Validations.FirstOrDefault();

没有得到错误并且只获得满足 Validation.Code == Code 测试的验证?

感谢您的帮助(我知道我听起来很困惑,但那是因为我是)。

4

2 回答 2

1

你有没有尝试过这样的事情:

var validation = cx.Validations.Where(v=>v.Code==Code &&
                                         cx.Users.Any(u=>u.UserID==v.UserID && 
                                                         u.UserGuid==UserGuid)
                                      ).FirstOrDefault();
于 2013-05-04T12:50:45.140 回答
1

您可能还需要通过执行以下操作来包含相关记录:

var user = cx.Users
             .Where(u => u.UserGuid.Equals(UserGuid))
             .Include(u => u.Validations)
             .FirstOrDefault();

但是您应该能够选择请求的验证

user.Validations
    .FirstOrDefault(v => v.Code.Equals(Code));
于 2013-05-04T12:57:01.017 回答