在下图中,我展示了我的桌子的外观。在过去的几个小时里,我试图为我需要的查询获得最佳解决方案,但不知何故我在 EF 的圈子里跑
我需要一组角色及其模块。由于有些角色没有分配模块,因此应该是左连接。集合应该看起来像“{role, modules}”角色应该是单个对象,模块应该是“模块”对象的集合。
我试着这样做
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); } }
}
工作正常。我的另一个问题是,....我怎样才能制作“set”访问器。
已编辑
现在得到这个,它的工作原理。但是我怎样才能访问模块的集合。
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 中使用它来设置为 datacontext*