Отображение столбцов с абстрактным классом (TPT с существующими таблицами) - PullRequest
0 голосов
/ 29 сентября 2011

Я работаю с существующей базой данных, но у меня возникла проблема с отображением моего абстрактного класса в таблицу как TPT. При этом возникла ошибка с сообщением "недопустимое имя столбца" ID "".

Простой класс выглядит следующим образом

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 ().

Пожалуйста, сообщите.

Спасибо

1 Ответ

1 голос
/ 29 сентября 2011

Эта ошибка возникает, если столбец первичного ключа в таблице MBR_PERSON (который одновременно должен быть внешним ключом для таблицы MBR) не имеет имени столбца ID (имя ключастолбец в таблице MBR).В сопоставлении TPT столбцы первичного ключа корневой таблицы для абстрактного объекта должны иметь то же имя, что и столбцы первичного ключа таблиц для производных объектов.

...