1
延遲加載時使用實體框架 - 當實體 爲空時,在加載相關實體時遇到以下問題。實體框架延遲加載子屬性中的空屬性
假設我有兩張僱員和employeedetails表。假設在上述情況下,並非所有員工條目都在employeedetails表中有條目。 如果我想查員工名單
(from e in objectcontext.employees
select new EmployeeEntity
{
EmpID= e.EmployeeID,
FirstName = e.FirstName,
Address = e.employeedetails.Address
}).ToList();
EmployeeEntity是爲我們的東西結果的數據類。
即使返回列表 中的一位員工在表employeedetails中沒有條目,上述代碼也會中斷。 這是顯而易見的,因爲e.employeedetails將爲空的那些客戶誰沒有一個細節條目
重寫上述查詢的最佳方法是什麼?
會這樣嗎?
(from e in objectcontext.employees
select new EmployeeEntity
{
EmpID= e.EmployeeID,
FirstName = e.FirstName,
Address = e.employeedetails == null ? "" : e.employeedetails.Address,
}).ToList();
我不清楚上述查詢的效率 - 此數據庫是否會在數據庫級執行空檢查?
我應該做的,而不是一個明確的包括像
objectcontext.include("employeedetails")...
然後遍歷結果檢查null?
您是否真的在運行時遇到空引用異常?在類似的查詢中(對可空引用對象選擇),我看到EF產生外連接和引用屬性(在你的情況下爲'Address')爲'null'。 –
是的。我在運行時遇到了空引用 - 除了它們可能不在字符串字段中。在實際的代碼中,我從引用對象中檢索了很多屬性。我認爲null break可能在DateTime字段上。 – user275157