0

EF 6 rc 1 を使用する Code first 遅延読み込みが有効になり、プロキシ生成が許可されます (デフォルト)。

ナビゲーション プロパティにアクセスしようとすると、次のことがわかりました。 - 参照されたオブジェクトが何らかの方法で DbContext に既に読み込まれている場合、ナビゲーション プロパティは設定されます - 参照されたオブジェクトがまだ読み込まれていない場合、ナビゲーション プロパティは null のままになります。SQL Server DB へのクエリは試行されません。

これは、コレクションとオブジェクトに適用されます。いずれの場合も、ナビゲーション プロパティが仮想としてマークされていることを確認しました。

これは予想される動作ですか?見つけたすべての記事を精査しましたが、これについての説明は見つかりませんでした (リンクを提供してください)。予期しない動作である場合、何が間違っている可能性がありますか?

ありがとうございました!

編集:私が持っているクラスを投稿できないため、これを簡単な例に再現して、投稿しやすいようにしました。ただし、単純な例は期待どおりに機能します。動作する例と動作しない例の大きな違いの 1 つに気付きました。動作しないアプリケーションは、プロキシではないエンティティを生成します。これは、プロキシ生成が許可されていても、これらのオブジェクトを新しいコンテキスト (作成されたコンテキストではありません) から取得しています。動作しないコードを投稿することはできません。動作するコードを投稿する価値はありません。プロキシ クラスが生成されない理由を説明する理論は大歓迎です!

4

1 に答える 1