Estoy utilizando 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 tabla por jerarquía . 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 haga que la BaseEntity
parte del modelo, por ejemplo, agregando un DbSet<BaseEntity>
a su contexto derivado, Entity Framework DbSet<BaseEntity>
esta jerarquía de clases por defecto en una sola tabla, pero introducirá una columna especial - el Discriminator
- para Distinguir entre los diferentes tipos ( Post
u OtherEntity
) almacenados en esta tabla. Esta columna se rellena con el nombre del tipo (de nuevo, Post
u OtherEntity
).
Puede detener la columna que se está creando al agregar la anotación de datos [NotMapped]
a los modelos que están heredando de su clase base. Esto le dirá a EF que no agregue su clase a futuras migraciones, eliminando la columna discriminadora.
public class BaseClass
{
}
[NotMapped]
public class InheritingClass : BaseClass
{
}