在Castle ActiveRecord的OnFlushDirty()事件中访问previousState时遇到问题
时间:2020-03-06 14:53:19 来源:igfitidea点击:
我有这个问题,我使用的是Castle ActiveRecord,并且在更新时会验证OnFlushDirty事件中对象的更改。
但是,当我访问previouState [" MyProperty"]时,它变为null,并且无法获取旧值。
你知道为什么吗?
这是代码;
protected override bool OnFlushDirty(object id, System.Collections.IDictionary previousState, System.Collections.IDictionary currentState, NHibernate.Type.IType[] types) { StringBuilder errors = new StringBuilder(); if (this._bankCode <= 0) errors.Append("Bank code is invalid" + Environment.NewLine); if (string.IsNullOrEmpty(this._name) || this._name.Trim().Length == 0) errors.Append("Name is invalid" + Environment.NewLine); //previousState["EnterpriseCode"] is always null if (previousState["EnterpriseCode"] != currentState["EnterpriseCode"]) { if (this._enterpriseCode == 0) errors.Append("Enterprise code is invalid" + Environment.NewLine); else ...
解决方案
我终于做到了,它碰巧在休眠状态下必须使用merge()来使休眠状态"加载"分离对象的先前数据,在Castle中,等效的是SaveCopy()方法。