2017-06-04 48 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列。否則,您必須手動映射鏈接表並管理關聯。