entity framework代码首先创build“鉴别器”列

我正在使用EF CF的方式与MySQL的网站。 出于某种原因,EF在我的Post表中创build一个名为“Discriminator”的列,并包含VARCHAR“Post”。

为什么创build这个列? 我可以做些什么来避免它被创build? 有这个专栏有什么好处吗?

Discriminator列在Table-Per-Hierarchyinheritancescheme中使用并且是必需的。 如果你例如有这样一个模型…

 public abstract class BaseEntity { public int Id { get; set; } //... } public class Post : BaseEntity { //... } public class OtherEntity : BaseEntity { //... } 

…并使BaseEntity成为模型的一部分,例如通过在派生的上下文中添加一个DbSet<BaseEntity> ,Entity Framework将默认将这个类层次结构映射到一个表中,但引入一个特殊的列 – Discriminator区分存储在此表中的不同types( PostOtherEntity )。 此列将填充types的名称( PostOtherEntity )。