私が理解しているように(間違っている場合は訂正してください)、それらの間に関係を持つエンティティークラスはいくつかの方法で定義できます - (1) スカラーキーを表すプロパティとナビゲーションプロパティの両方を使用するか、(2 ) ナビゲーション プロパティを使用するだけです。
データ注釈を使用する場合、唯一の選択肢はスカラー キーとナビゲーション プロパティの両方を使用することですが、Fluent API を使用すると両方のアプローチが利用可能です。
私の質問は、どのアプローチをとるかです。それぞれの長所と短所は何ですか?(これは、外部キーとナビゲーション プロパティに関する 2 つの選択肢に関するものです...データ注釈と Fluent に関するものではありません。
私が見ているように、それはこれらの要因/懸念に要約されます
- スカラー プロパティとナビゲーション プロパティの両方を持つことは、クラスを "汚す" と見なすことができます。
- ナビゲーション プロパティだけを持つと、FK 値にアクセスするには、Includes() 呼び出しが必要になります。送信されている SELECT ステートメントは見ていませんが、JOIN が実行されており、不要なデータが返送されていると思われます。
- スカラー プロパティがあると、Include() 呼び出しの必要がなくなります。
- 私からの以前の SO の質問 (関連する質問) で示唆されているように、ナビゲーション プロパティを複合キーの一部として使用できないように見えるため、追加のスカラー キーを含める必要があります。また、1 つのプロパティに対してそれを行う必要がある場合は、すべてのクラスで一貫性を保つことが理にかなっています。
何か不足していますか?一般的に、外部キーとナビゲーション プロパティを定義する推奨される方法は何ですか? 混乱しているように見えるのに、なぜ両方のアプローチを提供するのでしょうか? 私は多くのチュートリアルを見てきましたが、両方のアプローチが混在していることがわかります。
ありがとうございました。