나는 이것이 어딘가에서 다루어졌지만 나는 찾을 수 없다고 생각한다. 올바른 검색어를 사용하지 않는 것 같습니다.many-to-many 관계의 복합 기본 키와 코드의 열 먼저
기본적으로 나는 POCO로 정의하는 다 대다 테이블을 가지고 있습니다. 또한 원할 경우 두 개의 일대 다 관계가있는 테이블로 볼 수 있습니다.
한쪽 끝에는 다른 쪽 끝에 사용자 테이블과 나누기 테이블이 있습니다. 그러나 각 사용자 구분 콤보에는 여러 개의 관계가있을 수 있습니다. 따라서 연관 테이블에는 연도에 대한 int 열이 있고 기본 키는 UserId fk, DivisionId fk 및 Year의 복합 항목이됩니다.
EF 4.1 코드 우선에서 어떻게해야할지 확신이 들지 않았습니다. 나는 DataAnnotation 방법과 FluentApi 방법이 있기를 바라고있다.
이 내용을 다룬 튜토리얼을 가르쳐 주시면 정말 기쁠 것입니다.
사용자 :
이public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
//some other properties
public virtual ICollection<DivisionService> Services { get; set; }
}
부문 :
public class Division
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DivisionId { get; set; }
//some other properties
public virtual ICollection<DivisionService> Services { get; set; }
}
가입/메인 테이블 :
public class DivisionService
{
public int Year { get; set; } //this and the two foreign keys should be composite Primary Key
//some other properties
public virtual User User { get; set; }
public virtual Division Division { get; set; }
}
[Key]를 User 및 Division 속성에 추가 할 수 있으며 EF는 해당 테이블에 대한 fk로 인식합니까? –
아니요,'[Key]'는 PK에 관한 것입니다. 연도가있는 조인 테이블을 사용하려면 두 개의 1-N으로 연결을 설정하거나 PK의 연도 부분을 만들어야합니다. 페이로드가있는 연결은 지원되지 않습니다. –
그게 내가 말하는거야. 당신은 UserId와 DivisionId에 [Key] 속성을 DivisionService의 외래 키처럼 넣어야한다고 말했지만, 나는 정의하지 않았다. 코드는 먼저 나를 위해 그것을한다. 그래서 저는 그것들을 프로퍼티에 넣을 수 있습니다. 그리고 코드 우선은 그것을 FK 필드로 이해합니까? –