2011-03-23 12 views
0

次POCOSを見てください。正確な目的

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に関しては、作成されたデータベース構造に違いは見られません。通貨1と通貨2の表は私にとってはほとんど同じです。では、なぜこの追加のプロパティを追加するのが理にかなっていますか?

もちろん、POCOについて考えてみると、Currency2オブジェクトからどの国にもアクセスすることはできません。例:

 var a = currency1.Countries; // works fine 
     var b = currency2.Countries; // does not even compile 

これは唯一の違いですか?つまり、Currency2オブジェクトから国にアクセスする必要がない場合、EFの目的でCurrency2クラスに対応するナビゲーションプロパティを追加する必要はありませんか?ここで混乱している種類...

答えて

1

ナビゲーションプロパティは、直接アクセス(説明されているように)またはlinq-to-entitiesクエリで使用されます。使用する予定がない場合は、モデルから削除することができます。 you need a navigation property on at least one sideは、コードの最初のアプローチを使用してデータベースの実体化をモデル化できることに注意してください。

+0

おかげさまで、ラディスラフは、まさに私が思ったことです。再度、感謝します! – Ingmar