私はモデルページを持っています:
public int Id{ get; set; }
public string Name { get; set; }
私はそこに子ページを持ちたい:
public int Id{ get; set; }
public string Name { get; set; }
public List<Page> Childrens { get; set; }
同じモデルの不要な子アイテムをセットアップする最良の方法は何ですか?
私はモデルページを持っています:
public int Id{ get; set; }
public string Name { get; set; }
私はそこに子ページを持ちたい:
public int Id{ get; set; }
public string Name { get; set; }
public List<Page> Childrens { get; set; }
同じモデルの不要な子アイテムをセットアップする最良の方法は何ですか?
私が行った方法では、モデルにいくつかの追加のプロパティが必要です (遅延読み込みが必要だったため、ナビゲーション プロパティに virtual` キーワードを使用しています)。
public class Page
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentID { get; set; } // Nullable int because your Parent is optional.
// Navigation properties
public virtual Page Parent { get; set; } // Optional Parent
public virtual List<Page> Children { get; set; }
}
次に、外部キーの関連付けを使用して、次のように関係を構成できます (これは私のPage
マッピングです)。
// You may be configuring elsewhere, so might want to use `modelBuilder.Entity<Page>()` instead of `this`
this.HasMany(t => t.Children)
.WithOptional(t => t.Parent)
.HasForeignKey(x => x.ParentID);
基本的に、すべての子はその親を認識しており、ナビゲーション プロパティの結果として、両側から関係を調べることができます。