Проблема с отложенной загрузкой мягких удаленных объектов с помощью Nhibernate - PullRequest
0 голосов
/ 01 августа 2011

Привет всем, у меня есть проблема, я постараюсь описать в ближайшее время В нашем приложении мы используем Nhibernate в качестве ORM и Fluent Nhibernate для отображения, и был реализован мягкое удаление для объектов, которые означают сущность не удаляется физически для базы данных, она просто устанавливает свойства DeletedBy и DeletedDate со значениями. И проблема в том, что когда объекты, загруженные с отложенной загрузкой, загружаются и мягкие удаленные объекты. После загрузки сущностей мне нужно отфильтровать, где значение DeletedDate равно нулю в каждом месте кода, где эта сущность вызывается, но это не хорошо.

Как можно решить для всех сущностей эту проблему с удаленной программой отложенной загрузки?

Можете ли вы помочь мне?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

С беглым отображением Nhibernate проблема решается следующим образом в отображении классов для дочерней карты коллекции, необходимо добавить следующий оператор

.Where("DeletedDate is null")

пример

 HasMany(x => x.Registrations).Where("DeletedDate is null").KeyColumn("qualificationEnrolmentId").Inverse().Cascade.AllDeleteOrphan();

методыГде есть переопределение с выражением LINQ, но в этом случае это не работает

Where(x=>x.DeletedDate == null)

этот код не работает, потому что x в лямбда-выражении распознается как родительская сущность, а другие переопределения для метода Где принимают в параметре SQL-запрос неHQL.

2 голосов
/ 01 августа 2011

Я не использовал Fluent-Hibernate, поэтому не уверен, что он будет работать для вас, но для классического NHibernate:

В файле отображения классов HBM поместите предложение where в:

<class  name="Class_Type" table="Entity_Table" where="DeletedBy is null" >
...
</class>

для возврата только тех объектов, которые не были логически удалены для каждого запроса

...