NHibernate:插入后始终逐出实体

NHibernate:插入后始终逐出实体,nhibernate,Nhibernate,插入特定类型的实体后,我希望确保它始终从会话中退出 似乎我可以用IPostInsertEventListener做到这一点,但我不确定它是否安全 这是否有效: public class LogUpdatesPostInsertEventListener : IPostInsertEventListener { public void OnPostInsert(PostInsertEvent insertEvent) { var entity = insertEve

插入特定类型的实体后,我希望确保它始终从会话中退出

似乎我可以用IPostInsertEventListener做到这一点,但我不确定它是否安全

这是否有效:

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

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

我认为,考虑到您想要实现的目标,您拥有的代码看起来是正确的。我想知道您是否应该添加一个显式的
Session.Flush()
,以确保插入被提交到数据库,但这取决于您的要求


此外,请确保在一个工作单元(例如一个HTTP请求)中只使用一个会话。

为什么要这样做???@DiegoMijelshon-即登录到数据库。应用程序可以生成大量这样的“只写”记录。这就是为什么它们不应该存储在会话中。一般来说,nhibernate似乎不是最好的工具,但可能有一种方法可以正确配置它。