2017-06-04 24 views
0

私は4つのテーブルを持っており、その間に中間テーブルAM_PERFIL_APLICACIONES_TBLがあり、中間テーブルが正しく評価されない場合私はedmxで、私は多くの人との関係の問題であると説明するいくつかの記事を読んできました。多対多関係EF 6(4テーブルと1多対多の関係)linqで選択する方法

質問はどうすればLinqで4つのテーブルを選択できるのですか?

どうすればいいですかUPDATEINSERTまたはDELETEテーブルAM_PERFIL_APLICACIONES_TBLです。

私はあなたがあなたのオブジェクトモデルを設定するとき、それはUsuarios(U)とAplicaniones(A)間の多対多のテーブルである場合は、おそらくのコレクションを持つことになり、この

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

のようなものを持っています(A)とその内側(U)、および(U)の内部(A)の集合である。

ただし、これはリンクテーブルPerfil_Aplicaniones(PA)が(U)(ID_Perfilと仮定された)IDとAplicanionのIDだけを含むように設定されていることを前提としています。 (A)(ID_Aplicanionと仮定)

この場合、Entity Frameworkは仲介テーブルを自動的に処理します。 (U)と(A)の間に新しいリンクを設定するには、(A)参照をu.Aplicanionesコレクションに追加し、(U)参照をA.Usarios(またはPerfilsのいずれか)に追加します。オブジェクトを永続させると、EFは結合レコードを自動的に作成する必要があります。

代わりに、(U)と(A)エンティティにPAのコレクションが含まれている場合は、(PA)エンティティを明示的に作成し、(U)レコードと(PA)レコードをU.Perfil_AplicanionesとA.Perfil_Aplicanionesにそれぞれ追加します。

すべてはエンティティ(クラス)の構造によって異なります。 EFはテーブルを自動的にリンクすることができますが、メモリからリンクテーブルにはリンクIDカラムだけが含まれていなければなりません。それ以外の場合は、リンクテーブルを手動でマップし、関連付けを管理する必要があります。