0
votes

Comment éviter la redondance / enregistrer des données dans EF Core Beaucoup de relations?

Peut-être que quelqu'un s'il vous plaît répondez à moi comment ajouter et insérer correctement des données dans une table de jointure / une relation de plusieurs à de nombreuses personnes avec l'entité framework Core, sans enregistrer plusieurs fois plusieurs fois?

Mon contexte de base de données ressemble à cela avec API fluide: p> xxx pré>

Voici mes modèles pour l'utilisateur, le groupe et la table de jointure entre eux: P>

public class AppDatabaseContext : DbContext
    {
        public DbSet<User> Users { get; set; }
        public DbSet<Group> Groups { get; set; }
        //public DbSet<GroupMembers> GroupMembers{ get; set; }
    }
    ...
}


0 commentaires

3 Réponses :


0
votes

Je pense que EFCORE Tracker prend soin de la situation et ne pas insérer l'enregistrement deux fois. Si cela ne peut pas insérer votre objet GROUPMEMBER dans votre atabase une fois, au lieu de mettre à jour les groupes et les utilisateurs. Qui est également meilleure performance sage, car elle ne nécessite que une requête.


1 commentaires

Vous suggérez-vous de créer un DBST pour le groupe de groupe comme avec l'utilisateur et le groupe? dbset public utilisateurs {obtenir; ensemble; } public DBSet Groupes {Obtenir; ensemble; DBSBE publique GroupMembers {Obtenir; ensemble; }



0
votes

n'est-il pas vrai que les données des membres du groupe seront enregistrées deux fois par exemple. redondance?

Non. Vous définissez correctement la clé sur le groupe de groupe pour éviter que: xxx


1 commentaires

Je ne parle pas de l'objet du groupe de groupe. Il ne sera sauvé que survolé. Je parle de groupe et d'utilisateur, le fait que l'utilisateur a des informations sur ses groupes et que le groupe a des informations sur ses membres. À partir des informations sur tous les utilisateurs, il est possible de "générer" les informations sur chaque membre de chaque groupe.



1
votes

Est-ce comme ça?

Peut-être, mais la méthode avec la moindre générale est toujours d'avoir un DBSet . (Conseil: n'utilisez pas de noms de classe plurielle). Ensuite, tout ce dont vous avez besoin est de deux valeurs d'identifiant: xxx

Ceci peut être intégré à n'importe quel cas d'utilisation. Vous pouvez avoir des cas où seules les valeurs d'identification sont fournies à partir d'une interface utilisateur ou d'une API, ou où un groupe ou un groupe ou un est le point de départ, fournissant une valeur d'identification et Les valeurs d'identification de l'autre partie sont fournies. Tout se résume à ce petit morceau de code.


2 commentaires

Merci! Cela signifie-t-il que la liste des membres du groupe restera toujours vide dans l'utilisateur et dans le groupe? Si tel est le cas, est la seule raison de spécifier la liste à faire comprendre le modèle de relation EF?


Si vous avez un utilisateur ou un groupe attaché au contexte, EF ajoutera de nouveaux groupemember S à leurs collections par répartition relationnelle .