Событие обновления таблицы NHibernate - PullRequest
2 голосов
/ 01 апреля 2009

У меня есть это отображение таблицы (детали не имеют большого значения, я думаю):

WithTable("COPACKER_FACILITY");  
Id(x => x.FacilityNumber, "FACILITY_NUM").GeneratedBy.Sequence("FACSEQ");
Map(x => x.FacilityName, "FACILITY_NAME").Not.Nullable().Trimmed();
Map(x => x.AddressLine1, "ADDR1").Not.Nullable().Trimmed();
...
WithTable("FACIL_OTH_AUDIT_INFO", m =>
   {
      m.WithKeyColumn("FACILITY_NUM");
      m.Map(x => x.ProdnShiftsNum, "PRODN_SHIFTS_NUM").Not.Nullable();
      m.Map(x => x.ProdnCapacity, "PRODN_CAPACITY").Not.Nullable();
      m.Map(x => x.ProdnLinesNum, "PRODN_LINES_NUM").Not.Nullable();
      m.Map(x => x.AuditScore, "AUDIT_SCORE");
      m.References(x => x.FacilStatus, "STATUS_IND").Not.Nullable();
   });
HasMany(x => x.ComplianceFlags)
   .KeyColumnNames.Add("FACILITY_NUM")
   .Inverse()
   .Cascade.All();
...

Причина таблицы один в один - по причинам аудита. Существует таблица FACIL_OTH_AUDIT_INFO_HIST, которая должна получать записи для каждой вставки и обновления в основной таблице.

Мой вопрос: Как узнать, когда в эту таблицу происходит вставка или обновление, чтобы я знал, как вставить запись аудита?

Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 02 апреля 2009

+ 1 к тому, что сказал kvalcanti ... вот еще один пост, который, я думаю, объясняет это немного лучше (и показывает вам, как это сделать без конфигурации XML!). Я делаю то, что этот парень делает в моем проекте, и он работает очень хорошо.

http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.html

Предостережение: я не вставляю новые объекты, которые необходимо сохранить в этом событии, в мой проект, что, я полагаю, не будет проблемой, но я не могу сказать наверняка, так как я делаю не совсем то, что вы делаешь.

3 голосов
/ 24 августа 2009

Я опубликовал окончательное решение этой проблемы и решил поделиться

http://robtennyson.us/post/2009/08/23/NHibernate-Interceptors.aspx

0 голосов
/ 01 апреля 2009

Вы можете использовать прослушиватели событий.

попробуй http://nhibernate.info/doc/howto/various/creating-an-audit-log-using-nhibernate-events.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...