2012-05-17 50 views
0

插入特定類型的實體後,我想確保它始終從Session中被逐出。NHibernate:插入後總是驅逐實體

看來我可以用IPostInsertEventListener做到這一點,但我不確定它是否安全。

將這項工作:

public class LogUpdatesPostInsertEventListener : IPostInsertEventListener 
{ 
    public void OnPostInsert(PostInsertEvent insertEvent) 
    { 
     var entity = insertEvent.Entity; 

     if (entity is Foo) 
     { 
      insertEvent.Session.Evict(entity); 
     } 
    } 
} 
+2

你爲什麼要這樣做? –

+0

@DiegoMijelshon - 即登錄到數據庫。應用程序可以生成大量這樣的「只寫」記錄。這就是爲什麼他們不應該存儲在會話中。一般來說,看起來像nhibernate不是最好的工具,但可能有一種方法來正確配置它。 – mikalai

回答

0

我想給你想達到你有看起來是正確的代碼是什麼。我想知道是否應該添加一個明確的Session.Flush()以確保插入已提交到數據庫,但這取決於您的要求。

另外,請確保您在一個單一工作單元中僅處理一個會話,例如對於一個HTTP請求。