次のPOCOをご覧ください。
public class Country
{
[Key]
public Guid ID { get; set; }
[Required]
public virtual Currency Currency { get; set; }
}
public class Currency1
{
[Key]
public Guid ID { get; set; }
public virtual ICollection<Country> Countries { get; set; }
}
public class Currency2
{
[Key]
public Guid ID { get; set; }
}
Currency1のICollectionのようなナビゲーションプロパティが何のために必要か正確にはわかりません。EF CodeFirstに関しては、作成されたデータベース構造に違いは見られません。Currency1とCurrency2のテーブルは、私にはほとんど同じように見えます。では、なぜ、またはいつこのプロパティを追加するのが理にかなっているのでしょうか。
もちろん、POCOについて考えるだけで、Currency2オブジェクトからどの国にもアクセスできないことを理解しています。例えば:
var a = currency1.Countries; // works fine
var b = currency2.Countries; // does not even compile
しかし、これが唯一の違いですか?言い換えると、Currency2オブジェクトから国にアクセスする必要がない場合、EFの目的でCurrency2クラスに対応するナビゲーションプロパティを追加する必要はありませんか?ここでちょっと混乱しています...