2008-09-29 12 views
1

J'ai ce problème, j'utilise Castle ActiveRecord et quand je mets à jour je vérifie les changements dans l'objet dans l'événement OnFlushDirty. Cependant, lorsque j'accède au previouState ["MyProperty"], il devient null et je ne peux pas obtenir l'ancienne valeur.Problème d'accès à previousState dans l'événement OnFlushDirty() de Castle ActiveRecord

Savez-vous pourquoi?

c'est le code;

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 

     ... 

Répondre

1

j'ai finalement fait, il arrive que veille prolongée, vous devez utiliser la fusion() pour qu'Hibernate « charge » les données de previuos de l'objet détaché, dans le château de l'équivalent est la méthode SaveCopy().