我有两个几乎相同的表,Person和PersonArchive。你可以想象PersonArchive与Person非常相似,它只增加了两个额外的字段。我在下面创建了类结构,因此如果将另一列添加到Person,它会自动出现在PersonArchive中:
public partial class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
}
public partial class PersonArchive : Person
{
public string ArchivedBy { get; set; }
public DateTime ArchivedAt
{
get
{
return DateTime.Now;
}
}
}
我的解决方案从Person中读取数据,填写额外的两个字段并将其写入PersonArchive。问题是,当我尝试从Person中读取数据时,我得到了缺少的鉴别器问题,同时查看SO上的各个帖子,将NotMapped添加到PersonArchive解决了从Person读取的问题,但显然在插入PersonArchive时会导致问题。 / p>
我已经检查了各种帖子,但是它们似乎与我的问题不符 - 或者至少是我的理解:
Code First: Avoid discriminator column and keep inheritance
Entity framework code first creates "discriminator" column
Entity Framework: How to avoid Discriminator column from table?
答案 0 :(得分:0)
您应该定义另一个继承策略。 TPT - Table Per Type适用于您的情况。使用这种方法,您的活动不会有Disciriminator
列。
Table Per Hierarchy是Entity Framework中的默认继承策略。还要记住,TPT继承策略是not yet available in ASP.NET Core