gpt4 book ai didi

NHibernate PreUpdate 事件监听器不持久化更改

转载 作者:行者123 更新时间:2023-12-01 01:31:38 24 4
gpt4 key购买 nike

我们有以下 PreUpdate 事件监听器:

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 探查器显示 ModifiedDate/ModifiedBy 值未更新。

如果我更新持久性代码并手动设置 ModifiedDate,Profiler 会显示正在更新的 ModifiedDate。

我们大多数实体的映射文件是:
<property name="ModifiedDate" insert="false" />

关于什么可能阻止事件监听器设置的值被传播到数据库的任何想法?

最佳答案

你的表映射中有动态更新吗? NHibernate 中有一个“错误”,它阻止 PreUpdate 和 PreInsert 与动态更新一起工作。见 http://www.mail-archive.com/nhusers@googlegroups.com/msg13624.html

关于NHibernate PreUpdate 事件监听器不持久化更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com