gpt4 book ai didi

c# - NHibernate 拦截器不工作

转载 作者:行者123 更新时间:2023-11-30 22:14:11 25 4
gpt4 key购买 nike

我已经设置了一个 IIntercpetor 来在保存或更新实体时更新它们的时间戳(最后修改日期)。

我的实现是这样的:

public class NhInterceptor : EmptyInterceptor
{
public override bool OnSave(object entity, object id, object[] state,
string[] propertyNames, NHibernate.Type.IType[] types)
{
var baseEntity = entity as EntityBase;
if (baseEntity == null)
return false;

baseEntity.LastModification = DateTime.Now;
return true;
}

public override bool OnFlushDirty(object entity, object id,
object[] currentState, object[] previousState,
string[] propertyNames, NHibernate.Type.IType[] types)
{
var baseEntity = entity as EntityBase;
if (baseEntity == null)
return false;

baseEntity.LastModification = DateTime.Now;
return true;
}
}

此代码被命中,调试器显示 baseEntity.LastModification 具有正确的值,就在返回之前。

但是,我的 Json 输出(在 Web API 中)将 LastModification 显示为 0001-01-01T00:00:00,如果我在数据库中检查我创建的实体,它也显示相同的结果。

为什么这不起作用?

最佳答案

您需要更改 currentState 值。首先在 propertyNames 中查找“LastModification”,如果找到则更改索引​​的 currentState。您也可以在 IType[] 中检查类型。

关于c# - NHibernate 拦截器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619066/

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