NHibernate.Linq COMME
Comment puis-je produire cette requête à l'aide de NHibernate.Linq?
WHERE this_.Name LIKE @p0; @p0 = 'test' //Notice NO % wild card
Remarque, ce n'est pas De Linq to Sql ou Entity Framework. C'est NHibernate.
Edit:
Voici la requête souhaitée à l'aide de ICriteria:
criteria.Add(Expression.Like("Name", "test"));
return criteria.List<Theater>();
Vous devez vous connecter pour publier un commentaire.
Avec NH 4 (et probablement un peu plus tôt), un haut-
Like
chaîne d'extension est disponible dansNHibernate.Linq
espace de noms:Like(this string matchExpression, string sqlLikePattern)
. (Elle est définie surNHibernate.Linq.SqlMethods
classe d'extension.)Tout ce qui a été marqué comme résolu, ce qui était correct à l'époque, j'ai aussi remarque que NHibernate a quelques extensions maintenant de sorte que vous pouvez effectuer les opérations suivantes:
Cela va faire un
LIKE '%something%'
pour vous.using NHibernate.Criterion;
lorsque vous n'utilisez pas Resharper. Mais fonctionne très bien! Merci.Je crois que c'est ce que vous cherchez:
Selon mes tests, il génère un SQL 'COMME' énoncé:
"... OÙ le théâtre.Nom COMME %test%"
qui est exactement la sortie des critères de l'extrait de code que vous avez fournis.
J'ai eu le même problème dans mon projet et trouvé une solution :
Cela se traduit en SQL pour
&& x.Name.Length == "test".Length
. sinon tu finirais avec des résultats commetest blah blah blah test