1
我有以下層次LINQ到實體:嵌套列表的條件裝載
class Account
string username
List Delegations
class Delegation
List SingleDelegations
class SingleDelegation
string uid
現在,我想執行它加載一個Account
對象與根據依賴關係的查詢中的對象(即代表團和Delegations.SingleDelegations)已加載(與單查詢),但它應該只是加載這些符合規定的條件,即
- 只有那些用戶名的參數匹配帳戶(容易)
- 只有那些
SingleDelegation
的物件,UID給定參數
我的做法一致
我在AccountRepository
public Account ReadAccountsByUsernameAndUid(string username, string uid)
{
var matchingObjs = (from a in context.Accounts
from d in a.Delegations
from sd in d.SingleDelegations
where
a.username == username &&
sd.uid == uid
select new
{
Account = a,
Delegation = d,
SingleDelegation = sd
});
//knowing there should be just one account (ignore the missing null check for now)
return matchingObjs.FirstOrDefault<Account>().Account;
}
以下方法這顯然返回具有匿名類型的對象不同的對象暴露爲屬性。由於Account
和Delegation
和SingleDelegation
通過相應的FK鏈接,因此我的Account
對象將正確加載它們(如上下文所知)。
個人而言,這看起來很奇怪。我必須創建一個新的匿名類型來指示EF將子對象包含在查詢s.t中。最後,我正確加載了我的Account
對象。
我的問題:
有更好,更好的方法嗎?