繁体   English   中英

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

[英]Entity Framework proper use of joining tables?

我有下面的语法。 我已经设置了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;

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM