4
我们有以下的更新前的事件侦听器:在return语句NHibernate的更新前的事件监听器不更改保存
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;
}
断点指示旧/新的状态值和实体属性已更新为预期值。
但是运行Sql profiler表明ModifiedDate/ModifiedBy值没有更新。
如果我更新持久性代码并手动设置ModifiedDate,则Profiler会显示正在更新的ModifiedDate。
为广大实体的映射文件是:
<property name="ModifiedDate" insert="false" />
任何想法,以什么可以阻止事件监听器被传播到数据库中设置的值?
杰米杰出。谢谢。回到老拦截器...... – 6footunder 2010-12-08 19:08:36