代码之家  ›  专栏  ›  技术社区  ›  Kevin

jQuery。getJSON()和LINQtoSQL Using语句

  •  0
  • Kevin  · 技术社区  · 7 年前

    有人能解释一下,当我使用 $.getJSON() :

        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语句中,以便在查询完成后进行处理。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Liviu Boboia    7 年前

    我认为这可能是因为序列化是在退出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);
    
        }
    }