El código del marco de la entidad crea primero la columna “discriminador”

Estoy usando el enfoque EF CF para un sitio web con MySQL. Por alguna razón, EF crea una columna en mi tabla de publicaciones llamada “Discriminador” y contiene la “Publicación” de VARCHAR.

¿Por qué se crea esta columna? ¿Puedo hacer algo para evitar que se cree? ¿Hay alguna ventaja de tener esta columna?

La columna Discriminator se usa y se requiere en los escenarios de herencia de Table-Per-Hierarchy . Si, por ejemplo, tienes un modelo como este …

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

… y hacer que BaseEntity parte del modelo, por ejemplo, agregando un DbSet a su contexto derivado, Entity Framework DbSet esta jerarquía de clases de forma predeterminada en una sola tabla, pero introduzca una columna especial, el Discriminator , para distinguir entre los diferentes tipos ( Post u OtherEntity ) almacenados en esta tabla. Esta columna se completa con el nombre del tipo (nuevamente Post u OtherEntity ).

Puede detener la columna que se está creando agregando la anotación de datos [NotMapped] a los modelos que heredan de su clase base. Esto le indicará a EF que no agregue su tabla a futuras migraciones, eliminando la columna de discriminación.

 public class BaseClass { } [NotMapped] public class InheritingClass : BaseClass { }