NHibernate Criteria - Filtern nach Eigenschaftskombinationen
Ich musste eine Ergebnisliste mithilfe der Kombination von zwei Eigenschaften filtern. Eine einfache SQL-Anweisung würde folgendermaßen aussehen:
SELECT TOP 10 *
FROM Person
WHERE FirstName + ' ' + LastName LIKE '%' + @Term + '%'
Die ICriteria in NHibernate, die ich letztendlich verwendete, waren:
ICriteria criteria = Session.CreateCriteria(typeof(Person));
criteria.Add(Expression.Sql(
"FirstName + ' ' + LastName LIKE ?",
"%" + term + "%",
NHibernateUtil.String));
criteria.SetMaxResults(10);
Es funktioniert perfekt, aber ich bin mir nicht sicher, ob es die ideale Lösung ist, da ich immer noch etwas über die Kriterien-API von NHibernate lerne. Was sind die empfohlenen Alternativen?
Ist da noch etwas anderes alsExpression.Sql
das würde den gleichen Vorgang ausführen? Ich habe es versuchtExpression.Like
, konnte aber nicht herausfinden, wie Vor- und Nachnamen kombiniert werden sollen. Soll ich der Formel "Vorname + '' + Nachname" in der Zuordnungsklasse eine FullName-Eigenschaft zuordnen? Soll ich eine schreibgeschützte FullName-Eigenschaft für das Domänenobjekt erstellen und es dann einer Spalte zuordnen?