0
我正在針對現有的數據庫進行開發,將我的抽象類映射爲TPT,從而引發錯誤,指出「無效列名」ID「」。抽象類(帶有現有表的TPT)的列映射
簡單類如下
public abstract class Member
{
[DisplayName("ID")]
public string ID { get; set; }
[DisplayName("Date Applied")]
public System.DateTime? DateApplied { get; set; }
[DisplayName("Date Membered")]
public System.DateTime? DateMembered { get; set; }
[DisplayName("Member Type")]
public int MemberTypeFlag { get; set; }
}
public class Person : Member
{
[DisplayName("Last Name")]
public string LastName { get; set; }
[DisplayName("First Name")]
public string FirstName { get; set; }
[DisplayName("Date Of Birth")]
public System.DateTime DateOfBirth { get; set; }
}
,並映射到我的自定義表如下
public class MapMember : EntityTypeConfiguration<Member>
{
public MapMember()
: base()
{
HasKey(b => b.ID).Property(b => b.ID).HasColumnName("ID");
Property(b => b.DateApplied).HasColumnName("DTM_APPLIED");
Property(b => b.DateMembered).HasColumnName("DTM_MEMBERED");
Property(b => b.MemberTypeFlag).HasColumnName("MBR_TYPE_FLG");
ToTable("MBR");
}
}
public class MapPerson : EntityTypeConfiguration<Person>
{
public MapPerson()
: base()
{
Property(p => p.LastName).HasColumnName("LNAME");
Property(p => p.FirstName).HasColumnName("FNAME");
Property(p => p.DateOfBirth).HasColumnName("DOB");
Property(p => p.FirstName).HasColumnName("FNAME");
ToTable("MBR_PERSON");
}
}
但是無效的列名 「ID」 後db.savechanges提出()。
請指教。
感謝
感謝您指出這一點,一直在想這幾天。對於這樣的事情,是否會有DOs和Donts的任何鏈接。 – roggss
@roggss:我不知道一個關於這個的真正全面的資源(絕對不是關於這個Donts)。但是,這一點實際上是EF Code-First的配置選項中的一個漏洞,因爲您無法配置派生實體的表的鍵列名稱。由於這種限制,我不止一次看到人們在創建與現有數據庫的TPT映射時遇到問題。 – Slauma
非常感謝你。你真的幫了我很多。 – roggss