NHibernate Criteria可以从缓存中拉出来

时间:2009-07-10 20:16:23

标签: c# .net nhibernate session duplicates

我正在使用NHibernate将大量数据加载到数据库中。当我插入时,我想检查重复项。

我在每个循环中调用saveorupdate而不刷新会话。

有没有办法在没有刷新的情况下查询此会话的重复项?

2 个答案:

答案 0 :(得分:0)

也许您应该尝试将nhibernate与Spring.NET集成,以允许Spring.NET通过创建DAO支持来处理会话。希望这会有所帮助! http://www.springframework.net/docs/1.1-RC2/reference/html/dao.html

答案 1 :(得分:0)

你可以编写自定义拦截器,它为你提供带有以下签名的onsave方法 public override bool OnLoad(object entity,object id,object [] state,string [] propertyNames,IType [] types)

然后你可以在这个方法中有重复的检查逻辑。 (即保持该类型已存在的所有ID的字典)

或者,您可以直接在ISaveEventListner的自定义实现中连接重复的检查代码。 您需要在配置nhibernate时注册自定义事件列表器。这是ref的片段

Configuration cfg = new Configuration();
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() };
cfg.EventListeners.SaveEventListeners = stack;