多对多关系EF 6(4表和1对多关系)如何用linq

时间:2017-06-04 22:07:26

标签: c# linq-to-sql entity-framework-6

我有4个表,在它们之间有一个是中间表AM_PERFIL_APLICACIONES_TBL,当映射时,中间表在edmx中不欣赏我,我已经阅读了几篇文章,其中他们解释了它这是一个关系很多的问题。

问题是如何使用Linq选择4个表。

我如何UPDATEINSERTDELETEAM_PERFIL_APLICACIONES_TBL

我有类似的东西

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();

1 个答案:

答案 0 :(得分:1)

当您设置对象模型(如果它是Usuarios(U)和Aplicaniones(A)之间的多对多表)时,您可能在每个(U)中有一个(A)的集合,以及(U)每个(A)内部。

但是,假设您的链接表Perfil_Aplicaniones(PA)设置为仅包含(U)的ID(假设为ID_Perfil)和Aplicanion的ID。 (A)(假设为ID_Aplicanion)

如果是这种情况,Entity Framework将自动处理中间表。要设置(U)和(A)之间的新链接,请将(A)引用添加到u.Aplicaniones集合中,然后将(U)引用添加到A.Usarios(或Perfils,无论哪个)中。如果你持久存在这些对象,EF应该自动创建连接记录。

相反,如果您的(U)和(A)实体包含PA的集合,那么您将需要显式创建(PA)实体,设置对(U)和(A)记录的引用,然后添加(PA)分别记录到U.Perfil_Aplicaniones和A.Perfil_Aplicaniones。

这完全取决于您的实体(类)的结构。 EF可以自动管理链接表,但是从内存中链接表必须只包含链接ID列。否则,您必须手动映射链接表并管理关联。

相关问题