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を使用します。

基本的に、これにより、すべてのクラス階層に対して単一のテーブルが作成されます。

1 つのクラスの挿入が行われると、階層のすべてのクラスが同じテーブルに永続化されるため、(階層の) すべての列が入力されます。クラス列で使用されていないものには、null またはデフォルト値が入力されます。

これにより、挿入クエリに ShortDescription1 と ShortDescription2 が表示されます。

于 2014-07-23T16:25:31.417 に答える