C#3.0、Nhibernate 2.1.2、Castle ActiveRecord 2.1、WinXP 32
ActiveRecordとDetachedCriteriaで要素をフィルタリングするのに問題があります。2つのテーブルがあり、1つはフィルタリングされるオブジェクト(PropertyContainer)を含み、もう1つはこのオブジェクトに設定された動的プロパティの値(PropertyValue)を含みます。
PropertyContainer
Id int
PropertyValue
Id int
ContainerId int
Value real
いくつかの条件に一致するPropertyValueテーブルの値を持つPropertyContainerオブジェクトを選択する必要があります(たとえば、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を使用して動的プロパティセットでフィルタリングを行う正しい方法は何ですか?