NHibernate:Diferencia entre Restricción.In y Restricción.InG
-
09-06-2019 - |
Pregunta
Al crear un criterio en NHibernate puedo usar
Restricción.En() o
Restricción.InG()
¿Cuál es la diferencia entre ellos?
Solución
InG es el equivalente genérico de In (para colecciones)
Las firmas de los métodos son las siguientes (solo se muestra la sobrecarga ICollection In):
In(string propertyName, ICollection values)
vs.
InG<T>(string propertyName, ICollection<T> values)
Al observar el código fuente (troncal) de NHibernate, parece que ambos copian la colección en una matriz de objetos y la usan en el futuro, por lo que no creo que haya una diferencia de rendimiento entre ellos.
Yo personalmente uso In one la mayor parte del tiempo: es más fácil de leer.
Otros consejos
Restricción.In definitivamente crea una subconsulta con cualquier criterio que pase al método .In(), pero no estoy seguro de qué hace InG().nunca lo había visto.