0

ParentId というプロパティが Parent というナビゲーション プロパティにリンクされたエンティティがあります。この関係は正常に機能しているようですが、私の問題は、親がエンティティ ID と同じである「子」アイテムのリストである別のナビゲーション プロパティが必要なことです。

FK 属性で「ID」、「Parent」を試しましたが、「タイプ 'jrSite.Core.SiteModel' のプロパティ 'Children' の ForeignKeyAttribute が無効です」というエラーが表示されます。

そのナビゲーション プロパティで SiteModel テーブルを検索して、親 ID が一致する項目を検索するように EF に指示するにはどうすればよいですか?

私のクラスは以下です

public class SiteModel
{
    public SiteModel() { }
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public DateTime Created { get; set; }

    [ForeignKey("Creator")]
    public int CreatorID;
    public SiteAccount Creator { get; set; }

    [ForeignKey("Owner")]
    public int OwnerID;
    public SiteAccount Owner { get; set; }

    [ForeignKey("Parent")]
    public int? ParentID;
    public SiteModel Parent { get; set; }

    [ForeignKey("Parent")]
    public List<SiteModel> Children { get; set; }

    public SiteModel(SiteAccount creator, SiteAccount owner)
    {
        Creator = creator;
        Owner = owner;
        Created = DateTime.Now;
    }
}
4

2 に答える 2

0

DBContext クラスで OnModelCreating をオーバーライドし、次のコードを追加します。

modelBuilder.Entity<SiteModel>()
  .HasRequired<SiteAccount>(s => s.Creator);


modelBuilder.Entity<SiteModel>()
  .HasRequired<SiteAccount>(s => s.Owner);
于 2013-10-11T21:36:25.157 に答える