0
これはシナリオです。 私は1対Mの関係に2つのテーブルを持っています。例示の目的のため左のEntity Framework 6でIS NULLとIS NOT NULLを生成する方法
は
MyHeaderTable(headerID、COL1、COL2)
MyDetailTable(lineID、headerID、statusID、COL3、COL4)子行は任意で
注(ヘッダレコードとしてそれらを定義することができますしたがってLEFT JOINを、対応するラインなしで存在し得る
をIは、T-SQLを使用して、次の結果セットに興味:
SELECT MyHeaderTable h
LEFT JOIN MyDetailTable c ON h.headerID = c.headerID
WHERE c.lineID IS NULL -- no corresponding children
OR (c.lineID is NOT NULL AND c.statusID != 2) -- children rows must have status NOT 2
質問は、上記のT-SQLをEF6 linqに書き込む方法です。
私の試みが下に表示されますが、私はトラブルNULL ISとNULLではないとLINQクエリを生成が生じています:
var query = from h in ctx.MyHeaderTable
join c in ctx.MyDetailTable on h.headerID equals c.headerID into joinedTbl
from j in joinedTbl.DefaultIfEmpty() //LEFT JOIN
where j.lineID is null
|| (j.lineID != null && j.statusID !=2)
select;
var results = query.ToList();
*、私はEFが進化している知っていると何に興味を持っていないEF6の特定のバージョンに注意してください。以前のバージョンはそうしました。
これは "とんでもない" です!特定のフィールドではなく、エンティティレベルでnullをチェックします。うまく動作し、回答は受け入れられます。 – joedotnot