2012-11-23 3 views
2

와 많은 외래 키 매핑 많은 코드 먼저 나는이 수업 엔티티 프레임 워크 5, 여분의 재산

public class SecretQuestion 
{ 
    [Key] 
    public int SecretQuestionId { get; set; } 
    [Required] 
    public string Caption { get; set; } 
} 

public class UserSecretQuestion 
{ 
    public SecretQuestion SecretQuestion { get; set; } 
    public User User { get; set; } 

    [Required] 
    public string Answer { get; set; } 
} 

public class User 
{ 
    [Key] 
    public int UserId { get; set; } 
    public string Email { get; set; } 
    public string UserName { get; set; } 
} 

나는 UserSecretQuestion이 테이블은 사용자의 응답을 잡고 가입 할 할 수 있습니다. 문제는 EF5가이 테이블을 만들 필요가 없다는 것입니다.

그래서 물론 넣어. public int Id {get; 세트; }이 수정 될 예정이지만 필자는 데이터베이스에 필요하지 않은 필드를 넣습니다.

secretquestionid 및 userid 외래 키가 usersecretquestion 테이블에 대한 복합 키를 형성하도록이 작업을 올바르게 수행하는 방법이 있습니까?

여기에 몇 가지 많은 질문이 있지만 많은 관계에 대해 이야기하지만 엔티티에 여분의 데이터가있는 이러한 종류의 관계에 대해 이야기하는 사람은 없습니다. '대답'.

답변

3

먼저 및 UserId을 속성으로 UserSecretQuestion 클래스에 추가해야합니다.

public class UserSecretQuestion 
{ 
    [Key, ForeignKey("SecretQuestion")] 
    public int SecretQuestionId { get; set; } 

    [Key, ForeignKey("User")] 
    public int UserId { get; set; } 

    [Required] 
    public string Answer { get; set; } 

    public SecretQuestion SecretQuestion { get; set; } 
    public User User { get; set; } 
} 

당신은 다음 DbContext 클래스의 OnModelCreating 메소드를 오버라이드 (override) 조인 테이블에 대한 복합 키를 사용하는 엔티티 프레임 워크를 얘기해야합니다.

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    // Set composite keys 
    modelBuilder.Entity<UserSecretQuestion>().HasKey(k => new { k.SecretQuestionId, k.UserID }); 
} 
+0

나는 일하러 돌아올 때 월요일에 확인해 보겠습니다. 그래도 감사합니다. – Peter

+0

데이터 주석이 필요하지 않았습니다. –