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

ASP.NET Discussion :

Relation many to many suppression


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Relation many to many suppression
    Bonjour,

    Je suis en train de développer une application web API avec ASP.NET core et entity framework.

    J'ai une relation Many to Many entre ma table Client et ma table Contact. En effet, un contact peut appartenir à plusieurs clients et un client peut avoir plusieurs contacts.

    Voici le code qui me permet de faire actuellement la relation many to many :

    Client.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Client
    {
        [Key]
        public int Id { get; set; } //TODO : à supprimer
     
        public virtual List<ClientContact> ClientContacts { get; set; }
    }

    Contact.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Contact
    {
        [Key]
        public int ID { get; set; } //TODO : à supprimer
     
         public virtual List<ClientContact> ClientContacts { get; set; }
    }
    DBcontext.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
     
    public class DBContext : DbContext
    {
        public DBContext (DbContextOptions<DBContext > options)<br>        : base(options){}
     
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<ClientContact>()
                .HasKey(t => new { t.ClientId, t.ContactId });
     
            modelBuilder.Entity<ClientContact>()
                .HasOne(pt => pt.Client)
                .WithMany(p => p.ClientContacts)
                .HasForeignKey(pt => pt.ClientId);
     
            modelBuilder.Entity<ClientContact>()
                .HasOne(pt => pt.Contact)
                .WithMany(t => t.ClientContacts)
                .HasForeignKey(pt => pt.ContactId);
        }
     
        public DbSet<Client> Clients { get; set; }
        public DbSet<Contact> Contacts{ get; set; }
    }

    Le problème se trouve au niveau de la suppression d'un contact pour un client donné :

    En effet :

    Si un contact est associé à un seul client, il faut supprimer le contact ainsi que la ligne de la table ClientContact qui permet de faire le lien entre le client et le contact.

    Si un contact est lié à plusieurs clients, il faut juste supprimer la ligne de la table ClientContact sans supprimer le contact.

    Auriez vous une idée de comment faire cela ?

    Merci par avance pour votre réponse

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    J'aurais tendance à dire que ce n'est pas à ton service de se charger de l'intégrité référentielle de la base.

    Il y a aussi un autre débat.
    Est-ce une bonne idée de vouloir supprimer le contact également ?
    Est-ce que supprimer le lien ne suffit pas ?
    Je pense notamment à la nécessité de devoir recréer un contact avec toutes ces informations (qu'il faudra donc redemander et ressaisir) si un contact devient le contact d'un autre client après la suppression.

Discussions similaires

  1. Suppression des relations Many to Many
    Par Mangacker dans le forum Doctrine2
    Réponses: 8
    Dernier message: 06/05/2013, 17h25
  2. Relations many-to-many et suppression d'éléments
    Par djarBoy dans le forum QxOrm
    Réponses: 1
    Dernier message: 26/03/2012, 22h35
  3. Réponses: 5
    Dernier message: 04/10/2010, 12h28
  4. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08
  5. [hibernate]relation many-to-many
    Par quilo dans le forum Hibernate
    Réponses: 5
    Dernier message: 20/12/2005, 10h07

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