Monorail을 사용하여 강력하게 유형을 반환했습니다
-
16-09-2019 - |
문제
$ .getJson ()을 사용하여 컨트롤러에서 다음 방법을 호출하고 있습니다.
[return: JSONReturnBinder]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
var fields = from f in userfields
select new {f.ID, f.FieldName};
return fields;
}
내 _profilesVC에는 필요하지 않은 추가 데이터가 다시 제공됩니다 (실제로 세션이 닫혀서 nhibernate 오류가 발생합니다).
내가하고있는 일을하는 더 좋은 방법이 있습니까? 반환중인 데이터를 강력하게 입력해야합니까, 아니면이 접근법이 충분합니까?
감사.
해결책
나는 투영을 사용한다 (SetProjection()
) 그리고 SetResultTransformer()
결과를 DTO에 강하게 유형시키기 위해.
보다:
- http://www.nhforge.org/doc/nh/en/index.html#querycriteria-projection
- http://www.junasoftware.com/blog/nhibernate-setresulttransformer-and-dto.aspx
- http://ayende.com/blog/archive/2007/08/30/slicing-amp-dicing-queries-with-nhibernate.aspx
- http://devlicio.us/blogs/derik_whittaker/archive/2009/05/27/nhibernate-amp-setprojects-setprojects-w-list-gotcha.aspx
다른 팁
이미 사용해 보셨습니까?
[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
return userfields;
}
이게 도움이 되길 바란다.
먼저, 나는 행동의 반환 가치를 일리스트로 바꿀 것입니다 ...
세션 폐쇄 오류는 'var 필드'의 실행 지연에서 비롯 될 수 있다고 생각합니다. 반환 명령문을 fields.tolist ()로 변경하면 Lambda 표현식의 실행을 강요하고 세션 오류를 제거 할 수 있습니다.
[return: JSONReturnBinder]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
var fields = from f in userfields
select new {f.ID, f.FieldName};
return fields.ToList();
}
제휴하지 않습니다 StackOverflow