C# 多对多关系EF 6(4个表和1个多对多关系)如何使用linq进行选择

C# 多对多关系EF 6(4个表和1个多对多关系)如何使用linq进行选择,c#,linq-to-sql,entity-framework-6,C#,Linq To Sql,Entity Framework 6,我有4个表,它们之间有一个是中间表AM_PERFIL_APLICACIONES_TBL,当映射中间表在edmx中不受欢迎时,我阅读了几篇文章,其中他们解释这是一个多对多关系的问题 问题是如何使用Linq对4个表进行选择 如何更新,插入或删除表格AM_PERFIL\u APLICACIONES\u TBL 我有类似的东西 var query_modulo = (from a in menu.AM_USUARIOS_TBL jo

我有4个表,它们之间有一个是中间表
AM_PERFIL_APLICACIONES_TBL
,当映射中间表在edmx中不受欢迎时,我阅读了几篇文章,其中他们解释这是一个多对多关系的问题

问题是如何使用Linq对4个表进行选择

如何
更新
插入
删除
表格
AM_PERFIL\u APLICACIONES\u 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();

当您设置对象模型时,如果它是Usuarios(U)和Aplicaniones(a)之间的多对多表,则每个(U)内可能有一个(a)集合,每个(a)内可能有一个(U)集合

但是,这是基于您的链接表Perfil_应用程序(PA)设置为仅包含(U)的ID(假定为ID_Perfil)和应用程序的ID的假设。(A) (假定为ID_应用程序)

如果是这种情况,实体框架将自动处理中间表。若要在(U)和(a)之间建立新链接,请将(a)引用添加到您的U.Aplicianes集合,并在持久化对象时将(U)引用添加到您的a.Usarios(或Perfils,以两者为准),EF应自动创建连接记录

如果您的(U)和(A)实体包含PAs集合,则需要显式创建(PA)实体,设置对(U)和(A)记录的引用,然后分别将该(PA)记录添加到U.Perfil_应用程序和A.Perfil_应用程序


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

如果您正确设置了模型,则无需更新
AM\u PERFIL\u APLICACIONES\u TBL
。EF将从您的模型中计算出来,并为您更新该表。您能否向我解释如何对模型进行正确设置???还有一件事,我可以在设置时进行选择?您的意思是什么?我不明白你的问题。