나와 나와 일하는 친구가 Entity Framework 4 CTP 5에서 코드 퍼스트 Fluent API를 사용하여 매핑을 정의하는 데 어려움을 겪고 있습니다. 누군가가 분명히 말한 바보 같은 실수를 지적하기를 바랍니다. . 다음은 관련 데이터베이스 설정입니다.Entity Framework 4 매핑 문제
Person
------------
int PersonId (pk)
varchar Name
Contact
--------------
int ContactId (pk)
int ContactTypeId
varchar Text
따라서 사람은 0 개 이상의 전화 번호와 0 개 이상의 전자 메일 주소를 가질 수 있습니다. 전화 번호와 전자 메일 주소는 "Contact"테이블에 저장됩니다.이 테이블은 단순한 계층 별 테이블 상속 매핑 (유형 판별 자로 ContactTypeId 사용)입니다. 코드에서, 우리는이 :
public class Person {
public int PersonId { get; set; }
public string Name { get; set; }
public ICollection<Phone> Phones { get; set; }
public ICollection<Email> Emails { get; set; }
}
public abstract class Contact {
public int ContactId { get; set; }
public string Text { get; set; }
public Person Person
}
public class Phone : Contact {}
public class Email : Contact {}
... 그리고 데이터베이스 매핑 우리는이 :
public class ContactMapping : IFluentEntityFrameworkMapping
{
public void OnModelCreating(ModelBuilder modelBuilder)
{
EntityTypeConfiguration<Contact> configuration = modelBuilder.Entity<Contact>();
config.HasKey(c => c.ContactId)
.Map<Email>(e => e.Requires("ContactTypeId").HasValue(1))
.Map<Phone>(p => p.Requires("ContactTypeId").HasValue(2));
}
}
public class PersonMapping : IFluentEntityFrameworkMapping
{
public void OnModelCreating(ModelBuilder modelBuilder)
{
EntityTypeConfiguration<Person> config = modelBuilder.Entity<Person>();
config.HasMany(p => p.Phones).WithRequired(p => p.Person).HasForeignKey(p => p.PersonId);
config.HasMany(p => p.Emails).WithRequired(e => e.Person).HasForeignKey(e => e.PersonId);
}
}
우리는 우리가 단순히 당겨하려고하면,이 물건에 대해 간단한 단위 테스트를 실행하려고 전화 번호 나 이메일 주소의 콜렉션은 모두 정상입니다. 그러나 Person 컬렉션을 가져 오려고하면 매핑 오류가 발생합니다. 위의 코드 중 하나에 명백하게 잘못된 것이 있습니까? 어떤 도움을 사전에
감사합니다, KurtC