我已经创建了一个具有一些基本属性的抽象类:
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
根据您的评论,您有其他类继承自BaseModel,并且没有其他配置,EF默认使用TPH。
基本上,这导致了所有类层次结构的单个表。
当对一个类执行插入操作时,由于层次结构的所有类都持久化在同一个表中,因此填充(层次结构的)所有列。非类列使用null或默认值填充。
这会在插入查询中引入ShortDescription1和ShortDescription2。