我在使用MySQL的网站上使用EF CF方法.出于某种原因,EF在我的Post表中创建一个名为"Discriminator"的列,并包含VARCHAR"Post".
为什么要创建此列?我可以做些什么来避免它被创建吗?有这个专栏有什么好处吗?
Sla*_*uma 111
Table-Per-Hierarchy继承方案中Discriminator使用和需要该列.例如,如果您有这样的模型......
public abstract class BaseEntity
{
public int Id { get; set; }
//...
}
public class Post : BaseEntity
{
//...
}
public class OtherEntity : BaseEntity
{
//...
}
Run Code Online (Sandbox Code Playgroud)
...并创建BaseEntity模型的一部分,例如通过向DbSet<BaseEntity>派生的上下文添加一个,实体框架将默认将此类层次结构映射到单个表中,但引入一个特殊的列Discriminator- 用于区分不同的类型(Post或OtherEntity)存储在此表中.此列将填充类型的名称(再次Post或OtherEntity).
您可以通过将[NotMapped]数据注释添加到从基类继承的模型中来停止正在创建的列。这将告诉EF不要将您的类添加到将来的迁移中,从而删除了discriminator列。
public class BaseClass
{
}
[NotMapped]
public class InheritingClass : BaseClass
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37515 次 |
| 最近记录: |