NHibernate PreUpdate event listener not persisting changes
我们有以下 PreUpdate 事件监听器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public bool OnPreUpdate(PreUpdateEvent @event) { BaseBO entity = @event.Entity as BaseBO; if (entity == null) return false; var operatorName ="OpName"; var utcDateTime = DateTime.Now.ToUniversalTime(); Set(@event.Persister, @event.State,"ModifiedBy","Fred & Barney"); Set(@event.Persister, @event.State,"ModifiedDate", utcDateTime); entity.ModifiedBy ="fred & barney"; entity.ModifiedDate = utcDateTime; return false; } private void Set(IEntityPersister persister, object[] state, string propertyName, object value) { var index = Array.IndexOf(persister.PropertyNames, propertyName); if (index == -1) return; state[index] = value; } |
return 语句上的断点表示旧/新状态值和实体属性已更新为预期值。
但是运行 Sql profiler 显示 ModifiedDate / ModifiedBy 值没有更新。
如果我更新持久性代码并手动设置 ModifiedDate,Profiler 会显示正在更新的 ModifiedDate。
我们大多数实体的映射文件是:
1 | <property name="ModifiedDate" insert="false" /> |
有什么想法可以阻止事件侦听器设置的值被传播到数据库吗?
您的表映射中有动态更新吗? NHibernate 中有一个"错误"会阻止 PreUpdate 和 PreInsert 使用动态更新。请参阅 http://www.mail-archive.com/[email protected]/msg13624.html