我首先使用代码通过TPT继承链接到现有数据库,在此代码中,我有一个名为Person的基类和两个名为Student和Teacher的子类,而Student和Teacher类都继承自Person类
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Student : Person
{
public int? Payment { get; set; }
}
public class Teacher : Person
{
public int Wage { get; set; }
}这是我的上下文类
public class PersonContext : DbContext
{
public PersonContext()
: base("TPT")
{
Database.SetInitializer<PersonContext>(null);
}
public DbSet<Person> Persons { get; set; }
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().ToTable("Persons");
modelBuilder.Entity<Teacher>().ToTable("Teachers");
modelBuilder.Entity<Student>().ToTable("Students");
}
}我使用FirstName和LastName插入了一条记录,并将其保存在Persons表中,方法是向上下文中添加一个简单的Person实例。那是因为我不知道那个时候的人是什么类型的。在另一个列表中,操作员识别记录,并尝试向其中添加额外的数据(例如,为学生添加付款)。我现在该怎么做?如果我获取那个人的记录,并将其转换为Student类,然后尝试更新它,我将得到以下错误:
付款‘
’不包含'Payment‘的定义,并且找不到接受类型为'TablePerTypeInheritance.Models.Person’的第一个参数的扩展方法'Payment‘(是否缺少using指令或程序集引用?)
https://stackoverflow.com/questions/21497890
复制相似问题