2011-09-03 4 views
0

제품 테이블과 고객 테이블이 있습니다. 따라서 그들 사이에 많은 관계가 있습니다. 이 모델 빌더 사용하여 그 관계를 만드는 내 코드입니다 :EF 코드에서 다 대다 관계에 관한 문제가 발생했습니다.

modelBuilder.Entity<Customer>(). 
        HasMany(c => c.ProductsPurchased). 
         WithMany(p => p.Customers).Map(m => 
              m.MapLeftKey("CustomerId"). 
              MapRightKey("ProductId"). 
              ToTable("CustomersXProducts")); 

문제는 여기에 가입 테이블에 고객 ID 및 제품 ID의 기본 키를 포함합니다. 이는 기본적으로 한 고객이 동일한 제품을 한 번만 구입할 수 있음을 의미합니다. 이 문제를 어떻게 해결할 수 있습니까? CustomerId가 내 조인 테이블의 기본 키가되는 것을 원하지 않습니다.

답변

1

데이터베이스와 관련된 문제를 해결할 수 없습니다. 일반적으로 접합 테이블의 1 차 키가되는 고유 한 컬럼을 추가로 필요로하거나 CustomerIdProductId이있는 복합 키를 형성하기 위해 일부 추가 데이터 컬럼이 필요합니다. 그러면 모델이 변경됩니다. expose junction table as an entity - CustomerProduct 엔터티가 새 엔터티와 관련이 있어야합니다.

어쨌든 이것을 사용해야합니다. 추가 데이터없이 이러한 관계를 갖는 것은 일반적이지 않습니다. 아마도 당신의 모델은 더 큰 변화를 필요로 할 것입니다. 예를 들어 고객 추적 시스템은 일반적으로 Customer, Order, OrderItem, Product와 같은 엔티티 형식을 사용하므로 고객과 제품간에 직접적인 관련이 없습니다.

관련 문제