Проблема доступа к предыдущему состоянию в событии OnFlushDirty () Castle ActiveRecord - PullRequest
1 голос
/ 29 сентября 2008

У меня есть эта проблема, я использую Castle ActiveRecord и при обновлении проверяю изменения объекта в событии OnFlushDirty.

Однако, когда я получаю доступ к previouState ["MyProperty"], он становится нулевым и я не могу получить старое значение.

Знаешь почему?

это код;

    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 

         ...

1 Ответ

1 голос
/ 29 сентября 2008

Я наконец-то сделал это, так получилось, что в hibernate вы должны использовать merge (), чтобы этот hibernate «загружал» предыдущие данные отсоединенного объекта, в Castle эквивалентом является метод SaveCopy ().

...