1. ホーム
  2. entity-framework

エンティティフレームワークのコードは、最初に "discriminator "カラムを作成する

2023-09-23 06:18:30

質問

私は、MySQL を使用するウェブサイトのために EF CF アプローチを使用しています。 何らかの理由でEFは私のPostテーブルに"Discriminator"というカラムを作成し、VARCHAR "Post" を含んでいます。

なぜこの列が作成されるのでしょうか?作成されないようにするために何かできることはありますか? この列を持つことの利点はありますか。

どのように解決するのですか?

この Discriminator カラムが使用され テーブル・パー・ヒエラルキー を継承することができます。例えばこんなモデルがあったら...。

public abstract class BaseEntity
{
    public int Id { get; set; }
    //...
}

public class Post : BaseEntity
{
    //...
}

public class OtherEntity : BaseEntity
{
    //...
}

... そして BaseEntity の部分をモデルの一部として、例えば DbSet<BaseEntity> を追加することで、Entity Framework はデフォルトでこのクラス階層を単一のテーブルにマッピングしますが、特別なカラムを導入します - それは Discriminator - という特別なカラムを導入し、異なるタイプ ( Post または OtherEntity ) がこのテーブルに格納されます。このカラムには、型の名前 (やはり Post または OtherEntity ).