我有3个表:Users
,UserRoles
,UserRoleAssoc
(联接表仅包含UserID
和UserRoleID
)。实体框架在我的模型中没有显示UserRoleAssociations
似乎是正确的。我的目标是返回用户角色列表。如何获取UserRoles
= UserID?
UserID
这就是我看到它看起来是正确的还是有更好的方法呢?我想我使用从db?/ / p>更新模型时自动创建的导航属性
public IEnumerable<UserRole> GetUserRoles(int userID)
{
using (var ctx = new DataEntities())
{
var userroles = (from ur in ctx.UserRoles
from ura in ur.Users.Where(x => x.UserID == userID)
select ur).ToList();
return userroles;
}
}
答案 0 :(得分:1)
您的版本基本上是正确的,但它确实过于复杂。
尝试
public IEnumerable<UserRole> GetUserRoles(int userID)
{
using (var ctx = new DataEntities())
{
return ctx.Users.Where(x => x.UserID == userID)
.Select(x => x.UserRoles.ToList())
.FirstOrDefault();
}
}
或者
public IEnumerable<UserRole> GetUserRoles(int userID)
{
using (var ctx = new DataEntities())
{
return ctx.UserRoles.Where(x => x.Users.Any(y => y.UserID == userID))
.ToList();
}
}