【发布时间】:2018-11-12 07:47:13
【问题描述】:
我的数据库中有两个表:学生(多)和部门(一个)以及一对多关系。我想为每个 StudentName 显示一个包含 DepartmentName 的列表,但我收到此错误:System.NullReferenceException: Object reference not set to an instance of an object。
这是我的控制器代码(该代码适用于一对一关系):
public ActionResult Index()
{
List<Students> studlist = db.Students.ToList();
StudentViewModel studlistVM = new StudentViewModel();
List<StudentViewModel> studlistVMList = studlist.Select(x => new StudentViewModel
{
StudID = x.StudID,
StudName = x.StudName,
DeptName = x.deptobj.DeptName
}).ToList();
return View(studlistVMList);
}
【问题讨论】:
-
错误出现在哪一行?
-
Harald 的回答应该可以帮助您。我的猜测是您在 Student 上的“deptobj”未设置为虚拟,因此它不会延迟加载。在任何情况下都不应依赖延迟加载,因此 Harald 介绍了如何更好地从 DbContext 中选择相关数据,而不是在一个实体类型上使用 ToList() 然后尝试通过渴望或延迟从相关数据中填充视图模型加载中..
标签: c# .net asp.net-mvc entity-framework one-to-many