Entity framework 实体框架6每个层次结构表(TPH)缺陷
我创建了一个具有一些基本属性的抽象类:Entity framework 实体框架6每个层次结构表(TPH)缺陷,entity-framework,ef-code-first,table-per-hierarchy,Entity Framework,Ef Code First,Table Per Hierarchy,我创建了一个具有一些基本属性的抽象类: public abstract class BaseModel { public BaseWishModel() { } [Key] public int Id { get; set; } public virtual string Title { get; set; } public bool IsPublished { get; set; } public bool IsSpam {
public abstract class BaseModel
{
public BaseWishModel()
{
}
[Key]
public int Id { get; set; }
public virtual string Title { get; set; }
public bool IsPublished { get; set; }
public bool IsSpam { get; set; }
}
我的项目类别:
public class PrivateItem : BaseModel
{
[NotMapped]
public string PurposesIds { get; set; }
}
我的onmodel创建方法:
modelBuilder.Entity<BaseModel>()
.Map<PrivateItem>(r => r.Requires("Discriminator").HasValue((int)Enums.Type.Private))
.ToTable("Items");
我不知道为什么它会生成ShortDescription1和ShortDescription1,因为根据您的评论,您有其他继承自BaseModel的类,并且在没有其他配置的情况下,EF默认使用 基本上,这将为所有类层次结构生成一个表 当一个类的插入完成时,层次结构的所有类都会持久化在同一个表中,因此(层次结构的)所有列都会被填充。类列未使用的字段由null或默认值填充
这将在插入查询中引入ShortDescription1和ShortDescription2。是的,我有。这是一个映射`modelBuilder.Entity().Map(r=>r.Requires(“鉴别器”).HasValue((int)Enums.Type.Private)).Map(r=>r.Requires(“鉴别器”).HasValue((int)Enums.Type.Public”).Map(r=>r.Requires(“鉴别器”).HasValue((int)Enums.Type.Other)).ToTable(“项”);`我只提交了一个特定类的插入。为什么会发生这种情况?堆栈溢出允许您随时更新问题。请使用相关代码更新您的问题,这样其他阅读您问题的人就不必阅读所有注释来理解完整的问题(并允许将代码格式化以便于阅读)。我正在尝试将我的所有类指向同一个表。根据实体框架指南,我可以创建鉴别器来区分映射到同一个表的类。很抱歉,混淆了,但我已经创建了鉴别器属性,但仍然得到了错误。你能给我一个正确实现我的请求的示例吗?
INSERT [dbo].[Items]([Title], [IsPublished], [ShortDescription1], [ShortDescription2], [Discriminator])