下の画像では、テーブルの外観を示しています。最後の数時間、必要なクエリの最適なソリューションを取得しようとしていますが、どういうわけかEFのサークルで実行しています
モジュールを含むロールのコレクションが必要です。モジュールが割り当てられていないロールがあるため、左結合にする必要があります。コレクションは " {role, modules}" のように見える必要があります Role は単一のオブジェクトである必要があり、モジュールは "Module" オブジェクトのコレクションである必要があります。
こんな感じにしてみました
var x = (from r in _context.Role
from rm in r.RoleModule.DefaultIfEmpty()
join m in _context.Module on rm.ModuleID equals m.ID
select new { role= r, modules=rm }).ToList();
編集
lazyberezovskyの提案に従って、部分クラスを作成しました
public partial class Role
{
public virtual IEnumerable<Module> Modules { get { return RoleModule.Select(p => p.Module); } }
}
正常に動作します。私のもう1つの問題は、....「セット」アクセサーを作成するにはどうすればよいですか。
編集済み
今これを手に入れて、それは動作します。しかし、どうすればモジュールのコレクションにアクセスできますか?
var x = (from r in _context.Role
join rm in _context.RoleModule on r.ID equals rm.RoleID into ps
from rm in ps.DefaultIfEmpty()
select new { role=r, modules=rm.Module }).GroupBy(p => p.role).ToList();
*これをwpfで使用してデータコンテキストとして設定しています*