NHIberné :Différence entre Restriction.In et Restriction.InG
-
09-06-2019 - |
Question
Lors de la création d'un critère dans NHibernate, je peux utiliser
Restriction.In() ou
Restriction.InG()
Quelle est la différence entre eux?
La solution
InG est l'équivalent générique de In (pour les collections)
Les signatures des méthodes sont les suivantes (seule la surcharge ICollection In est affichée) :
In(string propertyName, ICollection values)
contre.
InG<T>(string propertyName, ICollection<T> values)
En regardant le code source (tronc) de NHibernate, il semble qu'ils copient tous les deux la collection dans un tableau d'objets et l'utilisent à l'avenir, donc je ne pense pas qu'il y ait une différence de performances entre eux.
Personnellement, j'utilise simplement le In one la plupart du temps - c'est plus facile à lire.
Autres conseils
Restriction.In crée définitivement une sous-requête avec les critères que vous transmettez à la méthode .In(), mais vous ne savez pas ce que fait InG().je ne l'ai jamais vu.