기본 키 사용에 대한 내 문제를 해결하기 위해 이미 고생하고 있습니다. 제발, 누군가이 퍼즐을 푸는데 도와주세요 !!!엔티티 프레임 워크 BaseEntity에서 CTP4 비표준 기본 키 이름 사용
저는 Code First 방식을 사용하여 CTP4와 함께 Entity Framework를 사용하고 있습니다. 나는 Huyrua see here에 의해 출판 된 저의 프로젝트 저장소 패턴을 채택했습니다. 나는이 유부남과 특히 CTP4 가능성으로 인해 매우 빠져 나왔다.
엔티티 정의의 경우 여러 중첩 레이어를 사용합니다. 우리가 BaseEntity이 맨 아래에, 그 같은 몇 가지 일반적인 필드를 포함
public abstract class BaseEntity: IEntityBase
{
public virtual Nullable<System.DateTime> InsertDate { get; set; }
public virtual Nullable<int> PK_InsertUserAccount { get; set; }
public virtual byte[] TimeStamp { get; set; }
}
그런 다음 우리는 예를 들어, 우리의 구체적인 실체에 대한이 클래스에서 파생 :
public class Person : BaseEntity
{
public virtual int PK_Person { get; set; }
public virtual byte PersType { get; set; }
public virtual string eMail { get; set; }
public virtual string Name { get; set; }
}
참고! DB 테이블 기본 키 이름은 "Id"가 아닙니다! PK_ 패턴을 사용하고 있습니다. 이러한 이유로 우리는 BaseEntity에 PK 필드 정의를 포함하지 않습니다. 또한, 우리는 우리의 비에 의해 국제 대회 기본 키 매핑 사용 EntityConfiguration
를 사용
public class PersonMapping : EntityConfiguration<Person>
{
public PersonMapping()
{
this.HasKey(p => p.PK_Person);
this.Property(p => p.PK_Person).IsIdentity();
this.MapSingleType().ToTable("dbo.Person"); //otherwise by convention it is converted to "People"
}
}
을 그리고 여기에 우리는 문제가있다. Person 엔티티를 사용하려고하면 엔티티 타입 'KDC.Model.Entities.BaseEntity'에 대한 키를 유추 할 수 없습니다. '입니다. ObjectContext가 기본 클래스에 기본 키를 정의해야한다고합니다. 실험 목적으로 BaseEntity에서 PK 필드 정의를 이동할 때 모든 것이 잘 동작했기 때문입니다. 그러나 우리의 경우에는 불가능합니다. 왜냐하면 각 테이블마다 기본 키 필드 이름이 다릅니다.
나는 길을 모르고 어디에서 잘못 되었습니까! 제발, 도와주세요 !!!
흠 ... 나는 CTP3이 문제가 기억하지 않습니다. 불행히도 아직 CTP4로 놀 기회는 없었습니다. – djskinner
Huyrua가 구현 한 리포지토리 patern - 어셈블리에 포함 된 엔티티가 식별되어 컨텍스트에 자동으로 추가되는 방법이 있습니다. –