にとNullReferenceExceptionをチェックするために、私は私のDALにEFで正常に動作LINQクエリを持っている:どのようにLINQの結果
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 CHEM: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を照会し、私の化学エンティティを取得し、私はこの化学エンティティに対してクエリを書くよりも。 私にとって奇妙なことは、u.Personとu.ProjectがNULLになる可能性があるため、最後のコードがSystem.NullReferenceExeptionをスローすることです。しかし、最初のクエリは例外をスローしませんが、その理由は何ですか? selectクエリでNULL参照を処理するにはどうしたらいいですか? "if"、 "?"または "??" ?
Btw:DALで複雑なクエリを実行するのは良いプログラミング方法ではないと思っていましたが、それは本当ですか? 何か助けていただければ幸いです。
あなたはこの記事を見たことがありますか? http://stackoverflow.com/a/14260113/821681 –
ジョニー:私は前にその投稿を見ていなかったし、それを見て、ありがとう。 Hucky – Hucky
いつでも。私はそれがあなたの問題を完全に解決するかどうかはわかりませんが、潜在的な可能性があるように見えましたので、私はそれを共有することに決めました。がんばろう! –