C# NHibernate条件能否从缓存中提取
我正在用NHibernate将大量数据加载到数据库中。当我插入时,我想检查重复项 我在每个循环中调用saveorupdate,而不刷新会话C# NHibernate条件能否从缓存中提取,c#,.net,nhibernate,session,duplicates,C#,.net,Nhibernate,Session,Duplicates,我正在用NHibernate将大量数据加载到数据库中。当我插入时,我想检查重复项 我在每个循环中调用saveorupdate,而不刷新会话 有没有办法在不刷新的情况下查询此会话的重复项?也许您应该尝试将nhibernate与Spring.NET集成,以允许Spring.NET通过创建DAO支持来处理会话。希望这会有帮助 您可以编写自定义拦截器,该拦截器为您提供具有以下签名的onsave方法 public override bool OnLoad(对象实体、对象id、对象[]状态、字符串[]属性名
有没有办法在不刷新的情况下查询此会话的重复项?也许您应该尝试将nhibernate与Spring.NET集成,以允许Spring.NET通过创建DAO支持来处理会话。希望这会有帮助 您可以编写自定义拦截器,该拦截器为您提供具有以下签名的onsave方法 public override bool OnLoad(对象实体、对象id、对象[]状态、字符串[]属性名称、IType[]类型) 然后,在这个方法中可以有重复的检查逻辑。(即,保留该类型已存在的所有ID的字典) 或者,您可以在ISaveEventListner的自定义实现中直接连接重复检查代码。 您需要在配置nhibernate时注册自定义事件列表器。下面是ref的代码片段
Configuration cfg = new Configuration();
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() };
cfg.EventListeners.SaveEventListeners = stack;
由于我已经解决了这个问题,我没有办法验证这是否正确。如果有人能证实,我会接受答案。