IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Entity Framework, Héritage et Discriminant


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 188
    Par défaut Entity Framework, Héritage et Discriminant
    Bonsoir,
    J'ai un soucis de discriminant avec Entity Framework (Core 3.19) en .Net framework 4.8. Il ne fait pas son boulot.

    Du code plutôt que des mots, du code :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public abstract MaBase
    {
        // Différentes propriétés communes dont
        public int IdExterieur { get; set; }
    }

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public MaClasse : MaBase
    {
        // D'autres propriétés en plus
    }
     
    public MonObjet : MaBase
    {
        // D'autres propriétés différentes
    }

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class BusinessContext : DbContext
    {
       // Mes 3 DbSet
     
       protected override void OnModelCreating(ModelBuilder modelBuilder)
       {
            modelBuilder.Entity<MaBase>()
                        .HasDiscriminator<bool>("Type")
                        .HasValue<MaClasse>(false)
                        .HasValue<MonObjet>(true);
     
            modelBuilder.Entity<MaBase>("IdExterieur", "Type").HasAlternateKey();
       }
    }

    Ce code compile, s'exécute, je fais la migration et la mise à jour de la base de données et tout est monté correctement avec la clé alternative.
    Par contre, aux premières données qui arrivent, quelque chose coince => Mon discriminant ne reste désespérément qu'à une seule valeur : false.
    Constat fait parce qu'il essaie d'insérer un clé déjà existante... Alors que s'en n'est pas justement parce que le Type devrait être à true normalement !!!

    Si je retire la clé alternative, ça fonctionne parfaitement avec le Type qui suit bien true-false en fonction de l'objet injecté mais j'ai besoin que IdExterieur soit unique pour chaque type (d'où ma clé alternative) et pas tout type confondu.

    Dois-je en être réduit à devoir gérer moi-même le discriminant (en faisant sa propriété dans MaBase, en la déclarant en discriminant et en l'initialisant dans le constructeur de chaque objet) ?

    Merci pour votre retour... Et bon week-end.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 188
    Par défaut
    Sans réponse, j'ai décidé de gérer moi-même le discriminant.

    Merci pour vos lectures... et celles à venir

Discussions similaires

  1. héritage entity framework .net 3.5
    Par ibrahimCA dans le forum Entity Framework
    Réponses: 0
    Dernier message: 27/05/2013, 16h05
  2. Réponses: 1
    Dernier message: 09/11/2009, 18h02
  3. version final d'Entity framework
    Par korchimustapha dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 04/07/2008, 17h21
  4. [ADO.NET Entity Framework] génération des tables
    Par anthyme dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2008, 17h44
  5. Linq - Entity Framework
    Par Jfrancois57 dans le forum Framework .NET
    Réponses: 11
    Dernier message: 12/02/2008, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo