2017-06-04 76 views
0

我有4个表格,它们之间有一个是中间表AM_PERFIL_APLICACIONES_TBL,当中间表的映射不感兴趣我在edmx,我已经阅读了几篇文章,他们在其中解释说这是一个多对多关系的问题。多对多关系EF 6(4表和1多对多关系)如何用linq选择

的问题是我怎么可以做一个选择的4个表使用LINQ。

我该如何才能UPDATE,INSERTDELETEAM_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

如果您设置的模型正确,你并不需要更新'AM_PERFIL_APLICACIONES_TBL'。 EF将从您的模型中找出它并为您更新该表格。 – CodingYoshi

+0

你能向我解释我怎样才能正确设置模型? –

+0

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

回答

1

当你建立你的对象模型,如果它是USUARIOS(U)和Aplicaniones(A)之间的许多一对多的表,你可能会拥有的集合(A)内部的(A)和(A)内的(U)的集合。

但是,这是假设您的链接表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列。否则,您必须手动映射链接表并管理关联。