簡體   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