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

Requêtes PostgreSQL Discussion :

Conflit entre colonnes (EF et PostgreSQL) - DOUBLON


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2023
    Messages : 58
    Points : 54
    Points
    54
    Par défaut Conflit entre colonnes (EF et PostgreSQL) - DOUBLON
    Bonjour tout le monde et bonne annee,

    Voici le contexte:

    je bosse sur un projeten C# .NET 6.0 avec EF ou j'ai une base de donnees PostgreSQL avec une table Utilisateurs et une table Bureaux.

    J'ai voulu ajouté une cle etrangere Bureaux a la table Utilisateurs:

    - j'ai donc modifie la classe model Utilisateurs en rajoutant un champ IdBureaux et une propriete de navigation vers la table Bureaux.
    - j'ai aussi rajouté la propriete de navigation vers Utilisateurs dans la classe model Bureaux.
    - sur le DbContext j'ai configuré le mapping comme il se doit.
    - je fais la migration et tout va bien

    Voici le probleme:

    au moment de mettre a jour ma DB avec EF j'ai un conflit: 23503: insert or update on table "Utilisateurs" violates foreign key constraint "Utilisateurs_Bureaux_fkey".

    Je precise que ma table Utilisateurs ne contient pas encore de colonne Idbureaux.

    J'ai essayé aussi de faire la migration de la table Utilisateurs avec le nouveau champ IdBureaux AVANT de proceder au mapping afin d'avoir la colonne idBureaux à peupler mais dans ce cas je me heurte a un autre probleme:il me dit que la colonne "bureaux_enregistres" existe deja. j'ai essayé d'annuler la migration, recuperer la migration relative a la creation de la colonne "bureaux_enregistres", commenter la methode Up de la migration et reessayer mais ca n'a pas marché.


    Voila j'espere que j'ai ete assez clair dans mon exposé.

    Merci,
    Gotax

    AVIS AUX MODERATEURS: comme je ne suis pas sur de la section, je vais recreer le meme sujet dans la section .NET.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 299
    Points : 39 639
    Points
    39 639
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    La base de données doit être modélisée avant de modifier et tester l'application , donc la colonne clef étrangère identifiant le bureau doit être ajoutée dans la table utilisateur.
    Ensuite, pour pouvoir insérer dans la table utilisateur, s'il y a une contrainte FK vers la table bureau, il faut impérativement que la valeur de cet identifiant bureau soit présente dans la table bureau.

    Et bien évidemment, la présence de la FK bureau dans la table utilisateur implique qu'un utilisateur ne possède qu'un et un seul bureau, sinon c'est incohérent.

    Note : si vous avez un doute sur le forum à utiliser, ne postez qu'une seule fois, le message sera le cas échéant déplacé par un modérateur dans le bon forum
    En l'occurrence, ici, il ne s'agit ni d'un problème postgresql, ni d'un problème de requête, ni même de langage de programmation, mais juste de séquencement des opérations : le modèle de données doit être stabilisé avant de coder l'application

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2023
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    J'ai fait un rollback de la migration et j'ai essayé de faire une nouvelle migration de la table utilisateurs afin d'integrer la colonne cle etrangere mais je me heurte a un conflit "la table X existe deja) la table X je l'ai cree lors d'une migration precedente, la derniere en date. J'ai essayé de commenter la methode Up de ladite migration mais ca n'a pas marché, j'arrive pas a modifier la table Utilisateurs pour enfin y mettre une valeur dedans.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2023
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    En fait le probleme venait du fait que EF essayait d'ajouter un Guid au format standard 0000-000-00.... alors qu'aucun id bureaux ne correspondait. J'ai donc du mettre le champ nullable pour eviter ce probleme.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 299
    Points : 39 639
    Points
    39 639
    Billets dans le blog
    9
    Par défaut
    Ce faisant vous créez des orphelins et l'intégrité de la base de données n'est plus vérifiée
    La bonne démarche c'est de créer la ligne dans la table référencée (ici la table des bureaux) avant de créer la ou les lignes dans la table référençante (la table des utilisateurs)

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2023
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    mon responsable m'a dit que si on cree la ligne sur Bureaux avant de la creer sur Utilisateurs le mapping ne se fera pas avec EF car il faut mettre a jour la table et faire le mapping a la volee. comme j'ai pas d'experience j'ai appliqué et voila.

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 299
    Points : 39 639
    Points
    39 639
    Billets dans le blog
    9
    Par défaut
    Je ne sais pas ce que c'est que "EF", mais si c'est ça qui explique qu'on accepte de prendre le risque de créer des failles d'intégrité dans la base de données, ça mériterait des explications.
    Une base de données non intègre est toujours une source d'inquiétudes et le plus souvent une source de mécontentements et de surcoûts, tant côté utilisateurs, que côté techniciens.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2023
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2023
    Messages : 58
    Points : 54
    Points
    54
    Par défaut
    EF c'est pour entity framework.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conflit entre colonnes (EF et Postgre SQL)
    Par gotax dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 06/01/2024, 11h29
  2. PL/pgSQL : conflit entre variable et nom de colonne
    Par archeboc dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 26/03/2008, 12h10
  3. Conflit entre bases de données
    Par BRODU dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2004, 11h40
  4. conflit entre couleurs
    Par khayyam90 dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/07/2004, 18h00
  5. [Technique] Conflits entre plusieurs requêtes
    Par Neowile dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 24/03/2003, 09h37

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