コンテキストの直後にコンテキストが配置されるため、関連するすべてのエンティティ(両方とも - > 1 FKs - > N FKs)を読み込む必要のある特定のクエリがあります。 。EF Code First:オプションの関係に含まれないインクルード
私はparams Expression<Func<MyItem, object>>[] includes
を受け取り、それを内部的にチェーンする一般的な "クエリ"メソッドを作成しました。その部分は正常に動作します。
クエリは次のようになります。
var item = facade.Query<MyItem>(
c => c.Childs.Select(x => x.Parent),
c => c.Childs.Select(x => x.SubChild1),
c => c.Childs.Select(x => x.SubChildNotWorking),
c => c.Childs.Select(x => x.SubChild2),
c => c.Childs.Select(x => x.SubChild3),
c => c.Childs.Select(x => x.SubChildrens)
).FirstOrDefault(c => c.Name == name);
(SubChildNotWorkingの構成で配置)動作していないプロパティのマッピング:含まれるすべての
this.HasMany(scnw => scnw.Childs).WithOptional(c => c.SubChildNotWorking).HasForeignKey(c => c.MyForeignKey);
、唯一SubChildNotWorking
doesnの」実際に働く。返されたオブジェクトをデバッガで調べると、すべてのプロパティのプロキシが表示されます。プロキシを開くと、他のすべてのリレーションの正しいデータが得られます。SubChildNotWorking
プロパティの場合、「objectcontextはすでに例外として処理されています。
唯一の違いは、SubChildNotWorking
は、NULL可能なFK(dbcontextではDBおよびWithOptional構成でNULL可能な列)ですが、他のすべてはWithRequiredで構成されたNULL可能ではないFKです。
データベースは、コードファーストで作成されておらず、規約に従わないレガシーDBでもあり、DbContextでマッピングを作成したばかりです。それ以外はうまく動作します。
ヌル可能なFKで熱心な読み込みが機能しないのかどうかを確認しようとしていますが、それに関するドキュメントが見つかりませんでした。
これはバグか意図した動作ですか?しかし、何よりも、私はこれをどのように解決するのですか?
ありがとうございました。
あなたが他のsubchildrenなしのみ 'SubChildNotWorking'が含まれている場合はどうなりますか?それはその後動作しますか? – Slauma
どちらもうまくいきません。 –
SQLが正しいかどうかチェックすることができますか( 'var sql = facade.Query(c => c.Childs.Select(x => x.SubChildNotWorking))。ToString();')、予想される結果の行を返す場合はSSMS。 –
Slauma