实体框架正确使用连接表?

时间:2011-10-17 17:54:13

标签: c# entity-framework-4

我有以下语法。我已经设置了sql约束(即数据模型中的外键关系等)。我想知道如何使用lambda表达式编写此语句。可能吗?我已经阅读了关于热切加载的文章,但不确定如何应用,如果我可以更简洁地编写查询?

var nominations = from n in ctx.Nominations
                              join c in ctx.Nominees
                              on n.NominationId equals c.NominationId
                              where c.NomineeADUserName == UserName
                              select n;

1 个答案:

答案 0 :(得分:1)

您可以使用Method语法编写相同的查询,如下所示:

ctx.Nominations.Join(ctx.Nominees, 
                     n=>n.NominationId, 
                     c=>c.NominationId, 
                     (n,c)=>new {c, n})
               .Where(x=>x.c.NomineeADUserName == Username)
               .Select(x.n);

我认为重要的是要使其易读而不简洁。您的版本更具可读性。

无论您是编写方法语法还是查询语法,查询都将以惰性方式进行评估。如果您愿意,可以通过在任一查询结束时调用ToList()来强制执行加载。

如果您还要加载导航属性(相关实体),则必须先调用Include方法EntitySet,然后再将其作为查询的一部分