L'exécution de la déclaration suivante NHibernate.Linq soulève un "could not instantiate: Reservation001.Services.ReservationDto"
NHibernate.QueryException contenant une exception InvalidCast intérieure ("L'objet doit mettre en œuvre IConvertible."):"ne pouvait pas instancier" NHibernate.QueryException Raise par combiné de requête LINQ
var inOneStep = (from r in session.Linq<Models.ReservationHeader>()
select new ReservationDto(r.Current));
return inOneStep;
Cependant, après avoir scindé ce qui précède en deux requêtes, ToList() a appelé les résultats du premier, le code s'exécute correctement.
var step1 = (from r in session.Linq<Models.ReservationHeader>()
select r).ToList();
var step2 = from z in step1
select new ReservationDto(z.Current);
return step2;
Pourquoi la version à instruction unique déclenche-t-elle une exception?
Merci,
Ben
Dans le premier exemple, pourquoi ReservationDto doit être convertible? Est-ce une limitation de l'implémentation Linq de NHibernate? –
@Ben Gribaudo - L'exception cast/IConvertible semble très probablement être une incompatibilité de type dans les fichiers de mapping, mais c'est difficile à dire à coup sûr. Voir par exemple: http://davidchristiansen.com/archive/2005/04/01/27953.aspx, http://forums.asp.net/t/1627881.aspx, https://forums.hibernate.org/ viewtopic.php? p = 2302650 & sid = ff2dcb4c955af1b6eb7a29727402e2bd, https://forum.hibernate.org/viewtopic.php?f=25&t=990532&start=0 Selon les circonstances, vous pouvez simplement corriger les correspondances ou, le cas échéant, les implémenter IConvertible. – Nathan