現時点では、簡単なテスト アプリケーションで EF5 コードを最初に使用して、さまざまな機能をテストしています。1 対多のリンクを表す 2 つのエンティティ間の「識別関係」を定義しました。ここでは、多くの子 Photo エンティティを持つ PhotoCollection を定義します。
public class PhotoCollection
{
public int Id { get; set; }
public virtual ISet<Photo> Photos { get; private set; }
public PhotoCollection()
{
Photos = new HashSet<Photo>();
}
}
public class Photo
{
[Key, ForeignKey("Parent"), Column(Order = 1)]
public int PhotoCollectionId { get; set; }
[Key, Column(Order = 2)]
public int PhotoId { get; set; }
public virtual PhotoCollection Parent { get; set; }
[Required, MaxLength(200)]
public string FilePath { get; set; }
public Photo()
{
}
}
私の OnModelCreating の実装には次のものが含まれます。
modelBuilder.Entity<Photo>().Property(p => p.PhotoId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
その結果、PhotoCollection を削除すると、「識別関係」によって提供されるすべての写真エンティティも削除されます。偉大な。
私の質問は、このオブジェクト グラフでさらにレベルを定義する方法です。たとえば、PhotoProperties を Photo の 1 対多のコレクションとして使用したいとします。この場合、PhotoCollection を削除すると、該当するすべての Photo および PhotoProperty レコードも削除されます。上記のアプローチを使用すると、PhotoCollection を指す PhotoProperty に GrandParent プロパティを追加する必要はないでしょうか?
モデル ビルダーで流暢な Api を使用して同じ結果を得ることができますか?
オンラインで見つけることができた唯一の例は、単一レベルの親>子階層の場合です。
前もって感謝します。