对象引用未设置为具有linq查询EF6.1的对象的实例

时间:2014-10-09 13:45:03

标签: c# asp.net linq entity-framework-6 jquery-datatables

我正在尝试为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

是的,我知道这里的异步无效。我希望在这里做异步数据库调用。所以,如果有人能指出我在哪里添加,我也会很感激。

0 个答案:

没有答案