Ich versuche, durch eine Liste von Werten mithilfe der Kriterien API zu filtern. Ich vermute, dass das nicht möglich ist, ich frage nur hier um sicher zu sein.NHibernate: Query-Filterung auf einer Liste von Werten mit Kriterien
class Entity
{
int id { get; set; }
IList<Guid> Guids { get; set; }
}
Die Abbildung:
<class name="Entity">
<id ...></id>
<bag name="Guids" table="Entity_Guids">
<key column="Entity_FK"/>
<element column="Guid"/>
</bag>
</class>
Angenommene Ich habe eine Liste von Guids (eigentlich diese ist eine weitere subquery). Ich möchte alle Entitäten filtern, bei denen mindestens eine GUID in der GUID-Liste enthalten ist.
Sql würde wie folgt aussehen:
SELECT *
FROM Entity e
inner join Entity_Guids eg
on e.id = eg.Entity_FK
WHERE
eg.Guid in (subquery)
mit Kriterien API, das scheint unmöglich zu sein.
ICriteria query = session
.CreateCriteria(typeof(Entity), "e")
.Add(Subqueries.In("e.Guids", subquery))
Wirft eine Ausnahme.
die Ausnahme? – MatthieuGD
und die Unterabfrage ist eine detachedcriteria? – MatthieuGD
Ja, die Unterabfrage ist eine DetachedCriteria. Die Ausnahme ist, dass das Argument "Schlüssel" nicht null sein darf. Es scheint eine Ausnahme zu sein, wenn man auf ein Wörterbuch zugreift und nicht viel bedeutet. –