Fer*_*ndo 2 nhibernate events listener
我正在尝试更改PreUpdateEventListener中的实体属性值,但新值不会保留,生成的sql包含属性的旧值.
代码很简单:
public bool OnPreUpdate(PreUpdateEvent @event)
{
var p = @event.Entity.GetType().GetProperty("audit_version");
if (p != null && p.CanWrite && p.CanRead)
{
int val = (int)p.GetValue(@event.Entity, null);
p.SetValue(@event.Entity, val + 1, null);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
和配置configuration.EventListeners.PreUpdateEventListeners = new IPreUpdateEventListener [1] {new AuditListener()};
很多!
您应该更新@ event.State,而不是@ event.Entity.@ event.State包含要在更新中使用的数据.您可能还想更新@ event.Entity以保持一致,但是当OnPreUpdate触发时,实体的数据已经被读入状态.您可以在@ event.OldState中找到数据库中存在的先前状态.
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |