我正在尝试为C#ASP.NET MVC控制器中的数据表插件实现服务器端处理。
这是我的代码:
public async Task<ActionResult> AjaxHandler(jQueryDataTableParamModel param)
{
IEnumerable<Device> filteredItems;
if (!string.IsNullOrEmpty(param.sSearch))
{
filteredItems = _db.Devices
.Where(c => c.AccountCode.Contains(param.sSearch) ||
c.Company.ClientId.Contains(param.sSearch) ||
c.FirmVersion.Contains(param.sSearch));
}
else
{
filteredItems = _db.Devices.Include(x => x.User);
}
var displayedItems = filteredItems.Skip(param.iDisplayStart).Take(param.iDisplayLength);
var result = from c in displayedItems
select new[] {
c.AccountCode,
c.SerialNo ?? "None",
"Company Name",
c.User.FirstName};
return Json(new { sEcho = param.sEcho,
iTotalRecords = _db.Devices.Count(),
iTotalDisplayRecords = filteredItems.Count(),
aaData = result },
JsonRequestBehavior.AllowGet);
}
我在displayedItems
选择的行上收到错误。
我已经调试过,发现问题特别针对c.User.Firstname
我有一种感觉,这是由于延迟加载问题或与EF评估有关。
所以我的问题是当我尝试访问虚拟对象User
时,EF为什么会给我一个空引用异常?我甚至明确地将其包括在内?
我正在使用EF 6.1
是的,我知道这里的异步无效。我希望在这里做异步数据库调用。所以,如果有人能指出我在哪里添加,我也会很感激。