Page
同様のページに関連付けられるクラスがあります。各関連付けには、関連付けに関する追加情報があります。これは、 の表現として定義されたクラスですPage
。
public class Page {
[Key]
public virtual int Id { get; protected set; }
[Required]
[StringLength(32)]
public virtual string Name { get; set; }
[InverseProperty("Page")]
public virtual ICollection<Association> Associations { get; set; }
}
各ページは、任意の数の他のページと関連付けることができます。これは、ソース ページとターゲット ページとして定義されます。アソシエーションが一方向か双方向かは気にしません。どちらも私の特定のシナリオでは正当化されます (私は双方向のアソシエーションを好みますが、難しいです)。これがアソシエーション クラスです。
public class Association {
[Key, Column(Order = 0)]
public virtual int PageId { get; protected set; } // SOURCE
[Required]
public virtual Page Page { get; set; } // SOURCE
[Key, Column(Order = 1)]
public virtual int TargetId { get; protected set; } // TARGET
[Required]
public virtual Page Target { get; set; } // TARGET
[Required]
[StringLength(32)]
public virtual string InformationAboutTheAssociation { get; set; }
}
今、私は次のコンテキストを持っています...
public class DbCtx : DbContext {
public DbSet<Association> Associations { get; set; }
public DbSet<Page> Pages { get; set; }
}
そして問題は、SQL Express が循環参照の可能性について不平を言っていることです (これは事実ではありませんが、過保護です)。説明されたシナリオを受け入れるために生成されたスキームをどのように解決しますか?
Introducing FOREIGN KEY constraint 'FK_dbo.Associations_dbo.Pages_TargetId' on table 'Associations' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
ありがとう!