Entity framework core 如何使用导航属性通过映射表检索两个实体上的数据?

Entity framework core 如何使用导航属性通过映射表检索两个实体上的数据?,entity-framework-core,Entity Framework Core,我有两个实体,“用户”和“系统”,以及一个带有UserID和SystemID的映射表“MapUsersSystems”。一个用户可以访问多个系统,一个系统可以被多个用户访问。我是EF Core的新手,不确定我的方法是否正确。如何检索某个用户可以访问的所有系统 Users CurrentUser = context.Users.SingleOrDefault(b => b.PkId == System.Convert.ToInt32(UserID)); List<MapUsersSy

我有两个实体,“用户”和“系统”,以及一个带有UserID和SystemID的映射表“MapUsersSystems”。一个用户可以访问多个系统,一个系统可以被多个用户访问。我是EF Core的新手,不确定我的方法是否正确。如何检索某个用户可以访问的所有系统

Users CurrentUser = context.Users.SingleOrDefault(b => b.PkId == System.Convert.ToInt32(UserID));

List<MapUsersSystems> systems = context.MapUsersSystems.Where(b => b.FkUser == CurrentUser.PkId).ToList();
Users CurrentUser=context.Users.SingleOrDefault(b=>b.PkId==System.Convert.ToInt32(UserID));
List systems=context.MapUsersSystems.Where(b=>b.FkUser==CurrentUser.PkId.ToList();

此时,我有一个MapUsersSystems对象列表,可以循环使用MapUserSystems的外键检索系统。但我不确定这样做是否是有意的。有没有更好的方法来获取用户可以访问的系统?

您已经接近了。只需从
MapUsersSystems
中选择
System
属性:

列出系统=
context.MapUsersSystems
.Where(b=>b.FkUser==CurrentUser.PkId)
.Select(us=>us.System)
.ToList();
旁注:帮你自己一个忙,使用单数词作为类名和引用属性。仅集合属性应为复数。使您的代码更易于解释