我有这个问题,我正在使用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
...
答案 0 :(得分:1)
我终于做到了,碰巧在hibernate中你必须使用merge()来使hibernate“加载”分离对象的previuos数据,在Castle中等效的是SaveCopy()方法。