Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate条件能否从缓存中提取_C#_.net_Nhibernate_Session_Duplicates - Fatal编程技术网

C# NHibernate条件能否从缓存中提取

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将大量数据加载到数据库中。当我插入时,我想检查重复项

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


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

也许您应该尝试将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;

由于我已经解决了这个问题,我没有办法验证这是否正确。如果有人能证实,我会接受答案。