감사 :
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; }
, 열 이름을 변경 링크와 [열]에 대한 [외래 키]를 사용하는 것이 었습니다 위의 코드는 1-to-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>();