0
我有一個簡單的分類管理系統。實體框架 - 獲取外鍵關係的計數
在我的自動生成的EF實體我有兩個重要性等級:
class Category {
public EntityCollection<Member> Members { get; }
}
class Member {
public Category ParentCategory { get; }
}
我有阻止類別中刪除,如果有任何一個成員的業務規則。我希望這樣做:
if(category.Members.Count() > 0) // then disallow deletion
但是,這個調用總是返回零。
看來,我需要真正的第一次加載集合,incurrs一個DB命中:
if(!category.Members.IsLoaded) category.Members.Load();
if(category.Members.Count() > 0) // then disallow deletion. This works.
我希望的是,EF將足夠聰明到初始.Count()
調用轉換成SQL SELECT COUNT(*) FROM Members WHERE Members.CategoryId = @parentCategoryId
代替實際加載成員實體並在內存中遍歷它們。
有沒有辦法在EF中做到這一點,還是我需要定義一個存儲過程或自定義SQL來實現這一點?