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);
}
}
有人可以向我解释为什么当我使用 $.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 语句中,以便在查询完成后处理。
我认为这可能是因为序列化在您退出使用后开始,从而关闭了与数据库的连接。如果需要在返回 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);
}
}