Fortemente tipo restituito JSON utilizzando monorotaia
-
16-09-2019 - |
Domanda
sto chiamando il seguente metodo nel mio controller utilizzando $ 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;
}
Il mio _profileSvc torna con i dati supplementari che non ho bisogno (in realtà ho NHibernate errori perché la sessione è chiuso).
C'è un modo migliore per fare quello che sto facendo? Dovrei digito fortemente i dati Sto tornando o è sufficiente questo approccio?
Grazie.
Soluzione
avrei usato una sporgenza (SetProjection()
) e SetResultTransformer()
a fortemente digitare il risultato a un DTO.
See:
- http://www.nhforge.org/doc /nh/en/index.html#querycriteria-projection
- http://www.junasoftware.com/blog/nhibernate -setresulttransformer-e-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
Altri suggerimenti
Avete già provato a usare
[return: JSONReturnBinder(Properties = "ID,FieldName")]
public object ProfileFields()
{
var userfields = _profileSvc.GetFields(282);
return userfields;
}
Spero che questo aiuta.
In primo luogo, vorrei cambiare il valore di ritorno dell'azione di essere un IList ...
Credo che la sessione errore chiusa può derivare da una ritardata esecuzione di 'campi var'. Se si cambia la vostra dichiarazione di ritorno al fields.ToList (), che costringerà l'esecuzione del espressione lambda e si potrebbe sbarazzarsi di errore di sessione:
[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();
}