2017-06-04 5 views
0

J'ai 4 tables et entre eux, il est celui qui est une table intermédiaire AM_PERFIL_APLICACIONES_TBL et lorsque le mappage de la table intermédiaire n'apprécie pas moi dans l'edmx et j'ai lu que plusieurs articles dans lesquels ils expliquent qu'il s'agit d'une relation de plusieurs à plusieurs.Many To many EF 6 (4 table et 1 relation plusieurs à plusieurs) comment sélectionner avec LINQ

La question est de savoir comment pourrais-je faire une sélection pour les 4 tables avec LINQ.

Comment puis-je UPDATE, INSERT ou DELETE la table AM_PERFIL_APLICACIONES_TBL.

J'ai quelque chose comme ça

var query_modulo = (from a in menu.AM_USUARIOS_TBL 
            join b in menu.AM_PERFIL_APLICACIONES_TBL on a.ID_PERFIL equals b.ID_PERFIL 
            join c in menu.AM_APLICACIONES_TBL on b.ID_APLICACION equals c.ID_APLICACION 
            join d in menu.AM_MODULOS_TBL on c.ID_MODULO equals d.ID_MODULO 
            where a.ID_USUARIO == _usrid 
            select new { d.ID_MODULO, d.DESCRIPCION }).Distinct().ToList(); 
+0

Si vous configurez votre modèle correctement, vous n'avez pas besoin de mettre à jour 'AM_PERFIL_APLICACIONES_TBL'. EF le calculera à partir de votre modèle et mettra à jour cette table pour vous. – CodingYoshi

+0

Pouvez-vous m'expliquer comment puis-je faire une mise en place appropriée pour le modèle ???? –

+0

http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx – CodingYoshi

Répondre

1

Lorsque vous configurez votre modèle d'objet si elle est une table Many-to-Many entre Usuarios (U) et Aplicaniones (A) vous probablement une collection de (A) à l'intérieur de chaque (U), et une collection de (U) à l'intérieur de chaque (A). Cependant, il est supposé que votre table de liaison, Perfil_Aplicaniones (PA), est configurée pour contenir uniquement l'ID de (U) (supposé être ID_Perfil) et l'ID de l'application Aplicanion. (A) (supposé être ID_Aplicanion)

Si tel est le cas, Entity Framework se chargera automatiquement la table intermédiaire. Pour créer un nouveau lien entre (U) et (A), vous ajoutez la référence (A) à votre collection u.Aplicaniones, et vous ajoutez la référence (U) à vos A.Usarios (ou Perfils, quel que soit celui-ci) Si vous persistez sur les objets, EF doit créer automatiquement l'enregistrement de jointure. Si à la place vos entités (U) et (A) contiennent à la place des collections de PA, alors vous devrez créer explicitement l'entité (PA), définir les références aux enregistrements (U) et (A), puis ajouter cet enregistrement (PA) aux U.Perfil_Aplicaniones et aux A.Perfil_Aplicaniones respectivement.

Tout dépend de la façon dont vos entités (classes) sont structurées. EF peut gérer les tables de liaison automatiquement, mais de la mémoire, la table de liaison ne doit contenir que les colonnes d'ID de liaison. Sinon, vous devez mapper la table de liaison manuellement et gérer les associations.