我有几个返回 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 方法中处理数据库,并且当对象被序列化时它失败 bc 连接已经关闭。
我的问题是, OnActionExecuted 是处理数据库连接的正确位置还是应该在其他地方执行它?如果可以在那里放置存储库,那么我如何“强制”序列化在我调用 Json(model) 的那一刻发生,这样它之后就不会失败。
谢谢你的帮助!