许多之间的关系ef 6(4个表和1个与许多关系)如何使用Linq选择



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

如果您设置对象模型是usuarios(u(和aplicaniones(a(之间的多对多表(a(时,您可能会在每个表中收集(a(的集合(u(,以及每个(a(内部的(u(集合。

但是,这是基于您的链接表,perfil_aplicaniones(pa(设置为仅包含(u(的ID(假定为id_perfil(和aplicanion的ID。(A((假定为ID_APLICANION(

如果是这种情况,实体框架将自动处理中介表。要在(u(和(a(之间建立一个新链接,您将(a(添加到u.Aplicaniones集合中,然后将(u(引用(u(引用到您的a.usarios(或perfils,无论是哪一(您坚持对象,EF应自动创建加入记录。

相反,如果您的(u(和(a(实体包含PAS的集合,则您需要明确创建(pa(实体,将引用设置为(u(和(a(记录,然后添加(pa(分别记录到u.perfil_aplicaniones和a.perfil_aplicaniones。

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

最新更新