【发布时间】:2010-11-09 20:24:06
【问题描述】:
我正在使用 NHibernate 将大量数据加载到数据库中。在插入时,我想检查重复项。
我在每个循环中调用 saveorupdate 而不刷新会话。
有没有办法在不刷新的情况下查询此会话的重复项?
【问题讨论】:
标签: c# .net nhibernate session duplicates
我正在使用 NHibernate 将大量数据加载到数据库中。在插入时,我想检查重复项。
我在每个循环中调用 saveorupdate 而不刷新会话。
有没有办法在不刷新的情况下查询此会话的重复项?
【问题讨论】:
标签: c# .net nhibernate session duplicates
也许您应该尝试将 nhibernate 与 Spring.NET 集成,以允许 Spring.NET 通过创建 DAO 支持来处理会话。希望这会有所帮助! http://www.springframework.net/docs/1.1-RC2/reference/html/dao.html
【讨论】:
您可以编写自定义拦截器,它为您提供具有以下签名的 onsave 方法 public override bool OnLoad(object entity, object id, object[] state, string[] propertyNames, IType[] types)
那么你可以在这个方法里面有重复的检查逻辑。 (即保留该类型已存在的所有 id 的字典)
或者,您可以在 ISaveEventListner 的自定义实现中直接连接您的重复检查代码。 您需要在配置 nhibernate 时注册您的自定义事件监听器。这是参考的sn-p
Configuration cfg = new Configuration();
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() };
cfg.EventListeners.SaveEventListeners = stack;
【讨论】: