1

我有这个问题,我正在使用 Castle ActiveRecord,当我更新时,我验证了 OnFlushDirty 事件中对象的更改。

但是,当我访问 prevouState["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 

         ...
4

1 回答 1

1

我终于做到了,碰巧在hibernate中你必须使用merge()来使hibernate“加载”分离对象的previuos数据,在Castle中相当于SaveCopy()方法。

于 2008-09-29T19:56:35.600 回答