Моя объектная модель выглядит следующим образом:
Элемент имеет много тегов, и тег может принадлежать многим элементам
Я бы хотел выполнить следующий запрос, используя критерии.
SELECT * FROM Item item
WHERE item.Id in (Select it.ItemId from dbo.ItemToTags it where it.Tag_id = 'ONE')
AND item.Id in (Select it.ItemId from dbo.ItemToTags it where it.Tag_id = 'TWO')
То есть я хотел бы предоставить коллекцию возможных тегов, а затем предоставить все элементы, имеющие все эти теги:
Я попробовал следующее, но не получил результатов:
CreateCriteria<Item>().CreateAlias("Tags", "Tags");
if (AndQuery) {
foreach(var tag in Tags)
{
criteria.Add(Subqueries.PropertyEq("Tags.Id", DetachedCriteria.For<Tag>().Add(Restrictions.Eq("Id", tag)) .SetProjection(Projections.Property("Id"))));
}
}