C # 3.0, Nhibernate 2.1.2, Castle ActiveRecord 2.1, WinXP 32
У меня проблема с фильтрующими элементами с ActiveRecord и DetachedCriteria. Есть 2 таблицы, одна из которых содержит объекты для фильтрации (PropertyContainer), а другая содержит значения динамических свойств, установленных для этого объекта (PropertyValue).
PropertyContainer
Id int
PropertyValue
Id int
ContainerId int
Value real
Мне нужно выбрать объект PropertyContainer со значениями из таблицы PropertyValue, соответствующими некоторому условию (например, свойство с Id = 1 и Value> 2). Я хотел бы сделать это с помощью DetachedCriteria, я пытаюсь написать что-то вроде этого:
var detachedCriteria = DetachedCriteria.For(typeof(PropertyContainer));
detachedCriteria.SetProjection(
Projections.SqlProjection(@"select Value from PropertyValue where Id=1"),
new[] { "ExternalProperty" },
new[] { NHibernateUtil.Double }));
detachedCriteria.Add(Expression.Ge("ExternalProperty",2));
var filteredItems = PropertyContainer.SlicedFindAll(0,100,detachedCriteria);
Затем этот вызов выполняется. Я получаю следующую ошибку: «не удалось разрешить свойство: ExternalProperty of: PropertyContainer»
Вопрос в том:
- Что плохого в таком подходе?
- Как правильно выполнять фильтрацию по динамическому набору свойств с использованием ActiveRecord / NHibernate и DetachedCriteria?