jQuery .getJSON() 和 LINQtoSQL Using 语句

jQuery .getJSON() and LINQtoSQL Using Statement

有人可以向我解释为什么当我使用 $.getJSON():

调用此代码 returns 时出现 500 内部服务器错误
    public JsonResult SomeItemList()
    {
        SomeDBDataContext _dbContext;
        IEnumerable<SomeModel> _items;
        using (_dbContext = new SomeDBDataContext())
        {
            _items= from list in _dbContext.GetItems()
                           select new SomeModel
                           {
                               Name= list.Name,
                               ID = list.ID
                           };
            return Json(_items, JsonRequestBehavior.AllowGet);

        }
    }

虽然这个工作完全没有错误:

public JsonResult SomeItemList()
        {
            SomeDBDataContext _dbContextv = new SomeDBDataContext();
            IEnumerable<SomeModel> _items;
            _items= from list in _dbContext.GetItems()
                               select new SomeModel
                               {
                                   Name= list.Name,
                                   ID = list.ID
                               };
                return Json(_items, JsonRequestBehavior.AllowGet);
        }

唯一的区别是我将第一个放在 Using 语句中,以便在查询完成后处理。

我认为这可能是因为序列化在您退出使用后开始,从而关闭了与数据库的连接。如果需要在返回 json 之前通过执行 .ToList() 将查询发送到数据库,它应该可以工作。

public JsonResult SomeItemList()
{
    SomeDBDataContext _dbContext;
    IEnumerable<SomeModel> _items;
    using (_dbContext = new SomeDBDataContext())
    {
        _items = (from list in _dbContext.GetItems()
                       select new SomeModel
                       {
                           Name= list.Name,
                           ID = list.ID
                       }).ToList();
        return Json(_items, JsonRequestBehavior.AllowGet);

    }
}