私は何を間違っていますか?ウィザードを使用して SQL サーバー データベースをマップしました。これはかなり複雑なデータベースですが、この例では、REPORTROWS、REPORTCOLUMNS、および REPORTNAMES の 3 つのテーブルを想定できます。REPORTROWS には、列 ID、RESULT、REPORTDATE、REPORTCOLUMNID、REPORTNAMEID があります。REPORTNAMES と REPORTCOLUMNS は、ID NAME を持つ非常に単純なテーブルです。ID は常に主キーであり、REPORTCOLUMNSID と REPORTNAMESID は REPORTROWS を REPORTCOLUMNS と REPORTNAMES にリンクする外部キーです。
次に、3 つのテーブルに有効な値を入力します (外部キー制約に違反していません)。次のコードを呼び出すと
var recs = from a in ctx.REPORTROWS
where a.REPORTNAMES.NAME == "my report" && a.REPORTDATE == somedate select a;
必要な行を取得しますが、フィールド a.REPORTCOLUMNS は null であるため、コードの後半では使用できません!! なんで?REPORTCOLUMNID は、null 非許容の整数として定義されます (これが外部キーである理由です)。ただし、フィールド a.REPORTNAMES は正しいです。a.REPORTDATE は&& a.REPORTCOLUMNS != null
、クエリに追加しても null のままです。
同様の質問へのリンクを見たことがありますが、決定的な答えは見つかりませんでした。誰でも私を助けてください。参考までに、私は .NET Framework 3.5 を使用していますが、データベースのマッピング中にウィザードで「外部キーを含める」をチェックできませんでした。グレー表示されていました(理由はまだわかりません)。
事前にどうもありがとう
それはEFバージョンv2.0.50727です