我正在使用實體框架...我有一個數據庫表患者與僱員表具有非強制外鍵關係,因此我可以將經理與患者相關聯。檢查EF中的空對象會導致額外的數據庫命中...怎麼回事?
我創建了實體EF爲患者,則員工和患者與員工之間的關聯,這是我的名字,以ManagerEmployee。
我還創建了另一部分類患者,讓我輕易地得到從我的業務對象類僱員的姓名,也被稱爲患者。
public string ManagerName
{
get { return this.ManagerEmployee == null ? string.Empty : this.ManagerEmployee.Name; }
}
所以我必須:
- 患者實體
- 患者局部類 (以幫助一些數據 檢索)
- 患者DTO(從 病人實體讀取)
我現在的問題是如果ManagerId(在這種情況下是Guid)與員工無關,或者沒有設置(Guid.Empty)...即使我急於加載,它仍會再次觸發數據庫。
IQueryable<Data.Patient> query = ctx.ObjectContext.Patients.Include("ManagerEmployee");
所以,如果我有1000條記錄,有此值集,一切都很好,但如果經理ID值不上任何一個記錄集,它使1 + 1000的數據庫訪問。
想知道是否有其他人有這個問題?可能有一些更大的與我的EF實體和/或協會的建設問題,所以我打開其他建議。
謝謝!