NHibernato:Diferença entre Restriction.In e Restriction.InG
-
09-06-2019 - |
Pergunta
Ao criar um critério no NHibernate posso usar
Restrição.In() ou
Restrição.InG()
Qual a diferença entre eles?
Solução
InG é o equivalente genérico de In (para coleções)
As assinaturas dos métodos são as seguintes (apenas a sobrecarga ICollection In é mostrada):
In(string propertyName, ICollection values)
vs.
InG<T>(string propertyName, ICollection<T> values)
Olhando para o código-fonte (tronco) do NHibernate, parece que ambos copiam a coleção para uma matriz de objetos e a usam daqui para frente, então não acho que haja uma diferença de desempenho entre eles.
Eu pessoalmente uso apenas o In na maioria das vezes - é mais fácil de ler.
Outras dicas
Restriction.In definitivamente cria uma subconsulta com qualquer critério que você passe para o método .In(), mas não tem certeza do que InG() faz.nunca vi isso.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow