ありがとう:
public class Authority
{
[InverseProperty("UsedFor")]
public List<Authority> UsedFor { get; set; }
[InverseProperty("Equivalent")]
public List<Authority> Equivalent { get; set; }
}
はで詳細を参照してください。私はリストとして列を定義していてもので、私はまた、定義の中で重要なミスを犯しているが何を働いていたことは、すなわち
[Column("Use")]
public long? UseID { get; set; }
[ForeignKey("UseID")]
public List<Authority> Use { get; set; }
、列の名前を変更するためのリンクと[コラム]は[ForeignKeyの]を使用することでした上のコードは1から0/1のキーで終わります。私が本当にしなければならなかったことは、多くの価値を受け入れるために子のテーブルを追加することでした。
私の最終的なコードは次のようになり、基礎となる列名はAuthority_ID3読めるの代わりAuthority_ID、Authority_ID1、Authority_ID2と、次のとおりです。私も追加したカスケードを防止するために
public class Authority
{
public long ID { get; set; }
public string Term { get; set; }
public string Language { get; set; }
public bool PreferredTerm { get; set; }
public TermStatus TermStatus { get; set; }
//Establish 1-to-0/1 self-referencing key
[Column("Use")]
public long? UseID { get; set; }
[ForeignKey("UseID")]
public List<Authority> Use { get; set; }
//Establis 1-many foreign keys
[ForeignKey("UsedFor")]
public List<AuthorityList> UsedFor { get; set; }
[ForeignKey("Equivalent")]
public List<AuthorityList> Equivalent { get; set; }
[ForeignKey("Broader")]
public List<AuthorityList> Broader { get; set; }
[ForeignKey("Narrower")]
public List<AuthorityList> Narrower { get; set; }
}
public class AuthorityList
{
public long ID { get; set; }
public long AuthorityID { get; set; }
public long? UsedFor { get; set; }
public long? Equivalent { get; set; }
public long? Broader { get; set; }
public long? Narrower { get; set; }
}
が邪魔になって削除
私のデータベースコンテキストに次の(全体のDBだけでなく、これらのテーブルに影響を与えます):
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();