我有4个表,在它们之间有一个是中间表AM_PERFIL_APLICACIONES_TBL
,当映射时,中间表在edmx中不欣赏我,我已经阅读了几篇文章,其中他们解释了它这是一个关系很多的问题。
问题是如何使用Linq选择4个表。
我如何UPDATE
,INSERT
或DELETE
表AM_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();
答案 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列。否则,您必须手动映射链接表并管理关联。