我正在使用带有MySQL的网站使用EF CF方法。由于某种原因,EF在我的Post表中创建了一个名为“ Discriminator”的列,并包含VARCHAR“ Post”。
为什么创建此列?我可以做些什么来避免它被创建吗?拥有此专栏有什么好处?
Answers:
Discriminator
在“按层次结构表”继承方案中,此列是必需的。例如,如果您有这样的模型...
public abstract class BaseEntity
{
public int Id { get; set; }
//...
}
public class Post : BaseEntity
{
//...
}
public class OtherEntity : BaseEntity
{
//...
}
...并成为BaseEntity
模型的一部分,例如,通过DbSet<BaseEntity>
在派生上下文中添加,Entity Framework默认会将此类类层次结构映射到单个表中,但会引入特殊列Discriminator
-来区分不同类型(Post
或OtherEntity
)存储在此表中。该列将使用类型名称填充(再次Post
或OtherEntity
)。
Discriminator
除了继承上下文,我从未见过专栏。我上面的代码只是一个例子。例如,如果Post
它本身不是派生的,但是如果还有其他实体是从派生的,则将得到相同的结果Post
。