2013-06-16 2 views
0

Я настроил ModifiedDate в моей конфигурации NHibernate для большинства моих объектов. Каждый объект наследует это:Игнорировать поле в слиянии NHibernate

public interface IAuditable { 
    string ModifiedBy { get; set; } 
    DateTime ModifiedDate { get; set; } 
} 

Каждый класс отображает эти поля в базе данных, так как мы хотим, чтобы эти значения считываются в каждой сущности. Я использую плавные настройки и классы карт.

Я внедрил IPreInsert и IPreUpdate прослушиватели событий, чтобы обновить измененную и измененную дату. Таким образом, значения аудита будут обновляться рамками. Я использовал здесь код: http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener

Как я могу гарантировать, что независимо от того, какие значения находятся в ModifiedBy и ModifedDate, они никогда не считаются грязными и сами не загрязняют объект? Сущность должна быть грязной только тогда, когда изменились другие поля.

+0

Вы можете искать, чтобы создать [пользовательский NHibernate слушателя событий] (http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.html). Вы можете создать тот, который наследуется от 'NHibernate.Event.Default.DefaultMergeEventListener' и обрабатывать эти даты явно. – valverij

ответ

0

Не могли бы вы пояснить, что вы подразумеваете под измененной датой? Насколько я понимаю: У вас есть какое-то сущность остроумия данных аудита безопасности, например:

public class SomeEntity { 
    ... 
    public DateTime CreatedDate { get; set; } 
    public DateTime? ModifiedDate { get; set; } 
    ... 
} 

И вы пытаетесь использовать функцию ISession.Merge слить entites?

Что вы подразумеваете под заявлением ниже? Не могли бы вы дать больше объяснений?

Я хотел бы сохранить и загрузить даты, но я хочу, чтобы NHibernate объединить функцию, чтобы игнорировать изменение даты в целях нахождения изменений

+0

Я отредактировал вопрос. Думаю, я сделал это гораздо более явным. Благодаря! – Jim

Смежные вопросы