기본 클래스가 관련되어있을 때 EF CTP5의 다 대다 관계에 이상한 문제가 있습니다. 먼저 작동하는 간단한 매핑을 보여 드리겠습니다.엔티티 기본 클래스를 사용할 때 EF CTP5 매핑 문제
public class ProductMapping : EntityTypeConfiguration<Product>
{
public ProductMapping()
{
ToTable("Products");
HasKey(t => t.ID);
Property(t => t.ID).HasColumnName("product_id");
Property(t => t.Name).HasColumnName("name");
}
}
public class ProcessMapping : EntityTypeConfiguration<Process>
{
public ProcessMapping()
{
ToTable("Processes");
HasKey(t => t.ID);
Property(t => t.ID).HasColumnName("process_id");
Property(t => t.Name).HasColumnName("name");
HasMany(p => p.Products)
.WithMany(p => p.Processes)
.Map(m =>
{
m.ToTable("Product_processes");
m.MapLeftKey(process => process.ID, "process_id");
m.MapRightKey(product => product.ID, "product_id");
});
}
}
이 매핑은 완벽하게 작동합니다 :
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Process> Processes { get; set; }
}
public class Process
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
그리고 내 매핑 클래스 :
나는 다음과 같은 두 개의 클래스 (실체)가 있습니다. 그러나 내 엔티티에 대한 기본 클래스를 소개하고자합니다. 그래서 시작으로, 나는 다음과 같은 기본 클래스 생성 :
public abstract class Entity
{
public int ID { get; set; }
}
나는이 Entity
기본 클래스에서 내 두 엔티티 Product
및 Process
상속을 만들었을 물론 각 클래스에서 ID 속성을 제거했습니다. ID 속성이 이제 기본 클래스에서 구현된다는 점을 제외하면 두 엔터티는 동일합니다.
컴파일하고 내 프로젝트를 실행 한 후, 나는 다음과 같은 "유명한"EF 런타임 오류 얻을 : 나는를 제거하는 경우 때문에,이 오류가 많은-to-many 연관 관계가 있음을
"Sequence contains more than one matching element"
을 알고 Process
클래스의 다 대다 매핑은 모든 것이 올바르게 실행되지만 물론 연관성은 없습니다.
아무도 문제가있는 것을 볼 수 있습니까? 이것은 CTP5 버그입니까, 아니면 구현에 문제가 있습니까? 버그라고 판명되면 해결 방법에 대한 제안이 있습니까?
나는 그것이 두려웠습니다. 하지만 디에고를 확인해 주셔서 감사합니다. MS가 버그를 알고 있고 그것이 RTM에서 수정 될 것이라는 것을 알고 있습니까? –
@ TommyJakobsen : 잘 모르겠습니다. 나는 포럼에서 물었지만 아직 답변을 얻지 못했습니다. –
문제가 해결 된 것 같아서 스레드를 닫으려면이 대답을 받아 들일 것입니다. –