【发布时间】:2012-04-27 05:05:53
【问题描述】:
我有几个返回 json 对象的操作方法。例如:
public JsonResult MyAction()
{
var entities = db.Entities.Include("Location").Where(e => e.Name != null);
var model = entities.Select(e => new MyModel(e));
return Json(model, JsonRequestBehavior.AllowGet);
}
在某些模型类中,我访问实体的内部元素,例如
public class MyModel
{
private Entity _e;
public MyModel(Entity e)
{
_e = e;
}
public string[] LocationName
{
get
{
return _e.Location.Name;
}
}
}
如果我将存储库 (db) 放在 Global.asax.cs 文件中的 OnRequestCompleted 之类的地方,这会很好用。 问题是,现在我在 BaseController 的 OnActionExecuted 方法中处理数据库,当对象被序列化时,它会失败,因为连接已经关闭。
我的问题是,OnActionExecuted 是处理数据库连接的正确位置还是应该在其他地方执行它? 如果可以在那里处理存储库,那么我如何“强制”序列化在我调用 Json(model) 的那一刻发生,这样之后就不会失败。
感谢您的帮助!
【问题讨论】:
标签: asp.net-mvc json entity-framework serialization