c# - 如何使用 Spring.Net 设置 NHibernate 以使用无状态 session ?

标签 c# nhibernate spring.net

我目前正在开发一个从文件中读取一堆数据的应用程序。要插入数据库的对象批处理的通常大小约为 40.000 个对象。到目前为止,我们已经使用 Spring.Net 和 NHibernate 进行开发,我希望尽可能保持一致,并为批量插入使用相同的技术。我有使用 NHibernate 的经验,我知道使用无状态 session 是可能的。

有没有办法使用 Springs.Net 事务和 session 管理,但使用 NHibernate 无状态 session ?对于如此大量的对象,使用有状态 session 不是一种选择,我真的很想使用 NHibernate 而不是 Spring.Net ADO

最佳答案

您可以构建自己的 HibernateTransactionManager 来创建这两种类型的 session 。这几乎没有开销,因为 session 的创建成本很低。

从 Spring.NET 源代码树中该类的副本开始。当它为常规 ISession 这样做时,让它打开和关闭 IStatelessSession。将您的 IStatelessSession 放入 Spring.Threading.HybridContextStorage 以便于访问。

然后在需要 IStatelessSession 的类上创建方法或扩展方法 GetStatelessSession。

或者,如果您使用的是 SQL Server,则使用 SqlBulkCopy 可能会更好。

关于c# - 如何使用 Spring.Net 设置 NHibernate 以使用无状态 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287884/

相关文章:

c# - 编译时在输出窗口中查看所有命令行

c# - 如何快速将数组归零?

c# - Fluent NHibernate - 脱水属性值出错;字典中不存在给定的键

c# - 错误的连接字符串 NHibernate 3.3

asp.net-mvc-4 - Spring.Net 抛出异常 : Request is not available in this context

c# - 可能的 GetObjectsOfType 替换

c# - 如何在没有 CRLF 的情况下在 C# 中 WriteAllLines

c# - 从 C# 运行 C++ Qt 应用程序

mysql - NHibernate:按 ID 集合排序结果

c# - 使用 Spring .NET 将用户名和密码发送到 .net Web 服务