본문 바로가기
.Net

.Net - EF 'Entity type 'xxx' has composite primary key defined with data annotations. To set composite primary key, use fluent API.'

by 올엠 2020. 11. 26.
반응형

금일 Database 의 PK(Primary Key)를 2개 지정하여 사용하다가 이와 같은 오류를 마주하였다.

 

 

이 오류는 .Net Entity Framework에서 Primary Key 2개가 실제 EF에서 적절하게 매핑이 되지 않아서 발생한다.

아래 그림과 같이 Data Model에 2개의 키를 지정해 준 상황에 발생하는 오류라고 할 수 있다.

        [Key]
        [Required]
        public string testkey { get; set; }
        public string version { get; set; }
        public string type { get; set; }
        [Key]
        [Required]
        public string realkey { get; set; }

 

따라서 Entity 생성 시점에 PK가 2개임을 알려줘야 한다.

위 오류가 발생한다면, DbContext를 관리하는 Model에 아래 코드를 추가하자.

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<yourmodel>()
                .HasKey(c => new { c.testkey, c.realkey });
        }

그리고 다시 실행하면 정상적으로 처리되는 것을 알 수 있다.

 

 

반응형