0

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

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

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

4

2 回答 2

0

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

于 2009-07-10T22:34:47.460 回答
0

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

那么你可以在这个方法里面有重复的检查逻辑。(即通过保留该类型已存在的所有 id 的字典)

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

Configuration cfg = new Configuration();
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() };
cfg.EventListeners.SaveEventListeners = stack;
于 2009-11-01T21:58:47.813 回答