나는 하나의 데이터베이스 테이블에EF5 상속
예를 들어 UserBrief 클래스 매핑 클래스의 여러 작은 버전했습니다 :
[Table("Users")]
public partial class UserBrief
{
[Key]
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
UserAdmin 클래스
[Table("Users")]
public partial class UserAdmin : UserBrief
{
public int RoleID { get; set; }
}
UserHR 클래스
을[Table("Users")]
public partial class UserHR : UserBrief
{
public string EmailAddress { get; set; }
public string Phone { get; set; }
}
나는 여러했습니다
사용자 클래스
[Table("Users")]
public partial class User
{
[Key]
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int RoleID { get; set; }
public string EmailAddress { get; set; }
public string Phone { get; set; }
}
는 상황을 경계. 컨텍스트의 기능에 따라 위의 클래스를 사용했습니다.
컨텍스트에 단일 클래스를 추가하고 다른 모든 클래스를 무시하면 올바르게 작동합니다. 내가 UserBrief 및 UserHRs 을 추가 한 경우 EF는이 (TPH) 접근 계층 당 테이블이라고 가정으로
예컨대
public DbSet<UserHR> UserHRs { get; set; }
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<UserBrief>();
modelBuilder.Ignore<UserAdmin >();
modelBuilder.Ignore<User>();
}
지금은 "잘못된 열 이름 '차별'" 오류 을 제공합니다.
저는 해결책을 찾고 있었지만이를 수행하는 방법을 찾을 수 없습니다.
아이디어가 있으십니까? 미리 감사드립니다.
답장을 보내 주셔서 감사합니다. Jake. 위와 같이 시도했습니다. 오류가 발생했습니다. 엔티티 유형 'UserAdmin'과 'UserHR'은 동일한 유형 계층 구조가 아니거나 유효한 일대일 대외 관계가 없기 때문에 '사용자'테이블을 공유 할 수 없습니다. 기본 키와 일치하는 키 관계. – user2011011
아, UserAdmin과 UserHR은 자신의 테이블에 매핑되어야하므로'[Table ("Users")]'를 유지하면이 에러가 발생합니다. 나는 코드에서 매핑 문제를 해결하기 위해'[ForeignKey ("UserBrief")]'는'UserHR'과'UserAdmin'의 EmployeeID 키에 추가되어야합니다. – Jake