質問: 私はMySQLのあるWebサイトに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`派生コンテキストに、Entity Frameworkのは、単一のテーブルに、デフォルトでは、このクラス階層をマップするが、特別なコラム紹介します- `Discriminator`します-このテーブルに格納されているさまざまなタイプ( `Post`または`OtherEntity` )を区別します。この列には型の名前(やはり`Post`または`OtherEntity` )が移入されます。