0

我创建了一个具有一些基本属性的抽象类:

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

4

1 回答 1

0

因为,根据您的评论,您有其他类从 BaseModel 继承,并且您没有其他配置,EF 默认使用TPH

基本上,这会导致所有类层次结构的单个表。

当一个类的插入完成时,层次结构的所有类都保存在同一个表中,因此(层次结构的)所有列都被填充。类列使用的非由 null 或默认值填充。

这会在您的插入查询中带来 ShortDescription1 和 ShortDescription2。

于 2014-07-23T16:25:31.417 回答