在插入特定类型的实体后,我想确保它始终从会话中逐出。
我似乎可以使用IPostInsertEventListener来做这件事,但我不确定它是否安全。
这会起作用吗?
public class LogUpdatesPostInsertEventListener : IPostInsertEventListener
{
public void OnPostInsert(PostInsertEvent insertEvent)
{
var entity = insertEvent.Entity;
if (entity is Foo)
{
insertEvent.Session.Evict(entity);
}
}
}
答案 0 :(得分:0)
我认为你想要实现的代码看起来是正确的。我想知道你是否应该添加一个显式Session.Flush()
来确保插件已提交到数据库,但这取决于你的要求。
此外,请确保在一个工作单元中仅使用一个会话,例如,对于一个HTTP请求。