我有一個LINQ查詢,在我的DAL與EF正常工作:如何在LINQ結果檢查的NullReferenceException
using (var mLEntities = new myLab02Entities1())
{
var test = from c in mLEntities.Chemicals
from u in c.Usages
select new
{
cChemID = c.Chem_ID,
c.Name,
c.Supplier,
c.Grade,
c.OrderNo,
c.BatchNo,
c.EntryDate,
c.CreatedBy,
cUser = u.Person.PersName,
uChemID = u.Chem_ID,
u.Study_ID,
u.UsedBy,
uUser = u.Person.PersName,
u.UseDate,
u.Project.StudyNo,
u.Project.ProjectName,
};
用法是化學品的導航性能(1種化學:N USA),和人與項目都是用法的導航屬性(均爲1:1)。 後來我想把這個查詢我的業務邏輯和寫道:
IList<ChemicalBDO> chemicalListBDO = chemListDAO.GetChemicalsListFromDB();
var test = from c in chemicalListBDO
from u in c.Usages
select new
{
cChemID = c.Chem_ID,
c.Name,
c.Supplier,
c.Grade,
c.OrderNo,
c.BatchNo,
c.EntryDate,
c.CreatedBy,
cUser = u.Person.PersName,
uChemID = u.Chem_ID,
u.Study_ID,
u.UsedBy,
uUser = u.Person.PersName,
u.UseDate,
u.Project.StudyNo,
u.Project.ProjectName
};
也就是說,我首先查詢我的EF的DbContext拿到我的化學實體,而且比我寫的對這種化學實體的查詢。 對我來說,奇怪的是,最後的代碼拋出一個System.NullReferenceExeption,因爲u.Person和u.Project可以爲NULL。但是第一個查詢不會拋出異常,這是什麼原因? 我如何處理在選擇查詢的空引用,我可以檢查NULL用「如果」,「?」要麼 」??」 ?
順便說一句:我想有在DAL複雜的查詢是沒有良好的編程習慣,這是真的還是我可以讓代碼呢? 任何幫助表示讚賞。
你見過這樣的職位? http://stackoverflow.com/a/14260113/821681 –
約翰尼:我沒有看到過那個帖子,我會看看吧,謝謝。 Hucky – Hucky
隨時。我不確定它是否能完全解決您的問題,但看起來它有潛力,因此我決定分享它。祝你好運! –