+ 1 фильтр отлично подходит для таких сценариев, но имейте в виду, что они не работают с ассоциациями «один к одному», «один-к-одному».
Так же и в случае классов Foo
и Bar
, где Bar
мягко удалено, а Foo
указывает на Bar
, и сопоставление отображается (т. е. Foo.Bar
), если вы выбираете Foo, а Bar удаляется мягко, объект все еще будет гидратирован.
Это проблематично, когда вы используете логику, подобную
if (Foo.Bar != null) {
//will never execute
}
Вы можете изменить это поведение, сделав тривиальное изменение в библиотеке, я написал пост на http://savale.blogspot.com/2010/01/enabling-filters-on-mapped-entities.html, которыйпоказывает, как это сделать.Он описывает действие для v2.1.2, но он аналогичен для v3.0 + pf NHibernate