76 votes

Le code du cadre d'entité crée d'abord la colonne "discriminateur"

J'utilise l'approche EF CF pour un site Web avec MySQL. Pour une raison quelconque, EF crée une colonne dans ma table Post appelée "Discriminateur" et contient le VARCHAR "Post".

Pourquoi cette colonne est-elle créée ? Puis-je faire quelque chose pour éviter qu'il ne soit créé? Y a-t-il des avantages à avoir cette colonne ?

9voto

Liam Appleyard Points 149

Vous pouvez arrêter la création de la colonne en ajoutant l' [NotMapped] aux modèles qui héritent de votre classe de base. Cela indiquera à EF de ne pas ajouter votre classe aux futures migrations, en supprimant la colonne discriminante.

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

3voto

Matt Points 46

Pour être complet, si vous souhaitez utiliser l'API fluide pour empêcher la classe héritant d'être mappée avec l'entité (et donc arrêter la création de la colonne discriminante), vous pouvez procéder comme suit :

 protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Ignore<InheritingClass>();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X