Pergunta

Preciso descobrir como executar alguma ação (cache de descarga) quando um objeto do tipo X é atualizado.

Então, quando eu salvo o objeto do tipo Y, nada é feito, quando economizo objeto inalterado do tipo X, nada deve acontecer, mas quando esse objeto é alterado e a atualização é feita, eu quero conhecê -lo.

Eu tentei vários eventos de Nibernate (IPostUpdateEventListener, IFlushEntityEventListener, etc.) mas não conseguiu.

Alguém pode ajudar, por favor? Obrigado

Foi útil?

Solução 2

Eu estava enfrentando um problema no método implementado, porque em alguns casos tive que chamar o mesmo método na implementação padrão, caso contrário, o caminho do código terminou no meu código.

private readonly DefaultFlushEntityEventListener _impl = new DefaultFlushEntityEventListener();

public void OnFlushEntity(FlushEntityEvent flushEntityEvent)
{
   ... my code goeas here ... 
   _impl.OnFlushEntity(flushEntityEvent);
}

No método de onflui de IFlushEntityEventListener Não posso detectar propriedades sujas ... etc.

Mas o que realmente funciona é (obrigado Andrew) é este código

public void OnPostUpdate(PostUpdateEvent postUpdateEvent)
{
   var dirtyProperties = postUpdateEvent.Persister.FindDirty(postUpdateEvent.State, postUpdateEvent.OldState, postUpdateEvent.Entity, postUpdateEvent.Session);
   int dirty = dirtyProperties.Length;

   if (dirty == 0) // I want detect only modififed entities
      return;
   Trace.WriteLine(string.Format("OnPostUpdate({0}, {3}) in session#{1} - dirty props. {2}", postUpdateEvent.Entity.GetType().Name, postUpdateEvent.Session.GetHashCode(), dirty, postUpdateEvent.Entity.GetHashCode()));
   lock (_objects)
   {
     if (!_objects.Contains(postUpdateEvent.Entity)) // I will manipulate this list in `AbstractFlushingEventListener.PostFlush` method
        _objects.Add(postUpdateEvent.Entity);
   }
 }

Outras dicas

você quer um IPostUpdateEventListener. Por que você não posta seu código que não funciona, então podemos ajudar;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top