json 개체를 반환하는 여러 가지 동작 메서드가 있습니다. 예 :ASP.NET MVC : 컨트롤러 동작을 끝내기 전에 json serialization 강제 수행
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;
}
}
}
이 잘 작동 경우 Global.asax.cs 파일의 OnRequestCompleted 같은 장소에서 I 저장소 (dB). 문제는 바로 지금 BaseController의 OnActionExecuted 메서드에 db를 삭제하고 개체를 직렬화하면 bc가 실패하고 연결이 이미 닫혀 있다는 것입니다.
내 질문은 OnActionExecuted가 데이터베이스 연결을 처리하기위한 올바른 위치입니까, 아니면 다른 곳에서 실행해야합니까? 저장소를 처분해도 괜찮 으면 Json (모델)이라고 부르는 순간 직렬화가 "강제로"강제로 수행되어 나중에 실패하지 않도록 할 수 있습니다.
도움 주셔서 감사합니다.
사실 그게 내가 그것은 단지 위치를 엔티티를 얻을 수 있지만하지 않습니다)에 ToList를 (사용하는 경우에도 정확히 사실이 아니에요. 위치는 액세스 할 때 검색되며,이 경우 직렬화가 발생할 때입니다. – willvv
글쎄, 열렬한 로딩이 작동하지 않고 여전히 느린 로딩 속성으로 처리된다는 것을 의미합니다. 이것은 다른 문제입니다. 모델에서 해당 엔티티를 제거하려고 시도 했습니까? 선택한 람다에만 속성이 할당 되었습니까? – Meligy