我正在使用NHibernate将大量数据加载到数据库中。当我插入时,我想检查重复项。
我在每个循环中调用saveorupdate而不刷新会话。
有没有办法在没有刷新的情况下查询此会话的重复项?
答案 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;