IT

EF 4.1 코드가있는 복합 키

lottoking 2020. 8. 13. 06:50
반응형

EF 4.1 코드가있는 복합 키


EF 코드 First 4.1 RC를 사용하여 복합 키를 방법을 알아 내려고합니다.

현재 [Key] Data Annotation을 사용하고 있지만 하나 이상의 키를 가지고 있지 않습니다.

복합 키를 어떻게 지정합니까?

내 예는 다음과 달라집니다.

 public class ActivityType
{
    [Key]
    public int ActivityID { get; set; }

    [Required(ErrorMessage = "A ActivityName is required")]
    [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
    public string ActivityName { get; set; }

}

"ActivityName"도 키가 필요합니다. 물론이 부분을 코딩 할 수는 좋은 데이터베이스 디자인은 아닙니다.


ActivityIDActivityName속성을 모두 Key주석으로-display하거나 @taylonr에서 설명한대로 유창한 API를 사용할 수 있습니다.

편집하다 :

작동합니다. 주석으로 정의 된 복합 키에는 명시적인 열 순서가 필요합니다.

public class ActivityType
{
    [Key, Column(Order = 0)]
    public int ActivityID { get; set; }

    [Key, Column(Order = 1)]
    [Required(ErrorMessage = "A ActivityName is required")]
    [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")]
    public string ActivityName { get; set; }

}

주석을 사용하지 않고 대신 모델 작성기를 재정의합니다.이 경우 다음과 같은 작업을 수행 할 수 있습니다.

modelBuilder.Entity<Activity>().HasKey(a => new { a.ActivityId, a.ActivityName });

참고 URL : https://stackoverflow.com/questions/5466374/composite-key-with-ef-4-1-code-first

반응형