当我尝试使用ASP.NET MVC获取所有部门名称的用户时,我会在此行中遇到此错误:
DepartmentName = db.Departments.Where(d => d.DepartmentId == u.DepartmentId).Select(n =>n.DepartmentName).ToString()
根据我在Google中搜索的内容,我认为我必须执行两个查询,但我不知道该怎么做。这是我的ViewModel
public class UserListViewModel
{
public string Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string RoleName { get; set; }
public string DepartmentName { get; set; }
}
和动作
public ActionResult Users()
{
List<UserListViewModel> model = new List<UserListViewModel>();
model = UserManager.Users.Select(u => new UserListViewModel
{
Id = u.Id,
FirstName = u.FirstName,
LastName = u.LastName,
Email = u.Email,
DepartmentName = db.Departments.Where(d => d.DepartmentId == u.DepartmentId).Select(n =>n.DepartmentName).ToString()
}).ToList();
预先感谢您!
linq到实体查询被转换为SQL,并在SQL Server中执行,以上代码使用单个查询中的两个不同上下文实例,即UserManager
和db
,框架framework die dim不允许在单个查询中具有两个不同的数据库上下文。
您可以在内存中分别获取Users
和Departments
,然后在一个集合中组织它们,或者您需要使用相同的上下文查询数据(使用db
用于Users
和Departments
),然后您可以在单个请求中获取这两个结果到数据库服务器。
希望它有帮助。