我创建了一个带有一些基本属性的抽象类:
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; }
}
我的OnModelCreating方法:
modelBuilder.Entity<BaseModel>()
.Map<PrivateItem>(r => r.Requires("Discriminator").HasValue((int)Enums.Type.Private))
.ToTable("Items");
当我保存数据时,它会生成下一个sql:
INSERT [dbo].[Items]([Title], [IsPublished], [ShortDescription1], [ShortDescription2], [Discriminator])
我不知道它为什么会生成ShortDescription1和ShortDescription1
答案 0 :(得分:0)
根据您的评论,您有其他继承自BaseModel的类,并且没有其他配置,EF默认使用TPH。
基本上,这会导致所有类层次结构的单个表。
当一个类的插入完成时,层次结构的所有类都保存在同一个表中,所有列(层次结构)都被填充。类列的非填充值由null或默认值填充。
这会在插入查询中引入ShortDescription1和ShortDescription2。