1

私はこの問題を抱えています。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 

         ...
4

1 に答える 1

1

私はついにそれを作りました.Hibernateでは、分離されたオブジェクトの前のデータをHibernateに「ロード」させるためにmerge()を使用する必要があります.Castleでは、SaveCopy()メソッドが同等です.

于 2008-09-29T19:56:35.600 に答える