c# - 使用 NHibernate 将行插入数据库表而不在插入行后调用 scope_identity

标签 c# nhibernate fluent-nhibernate

我正在尝试使用 NHibernate 将大量数据插入数据库,但速度非常慢。我已经阅读过它,到处都是建议让 NH 设置行的标识,以便它可以批处理并且不需要在插入后调用 SCOPE_IDENTITY,但是,它是一个带有遗留数据库的棕地应用程序,所以我可以'让 NHibernate 控制行的标识。

有什么方法可以告诉 NH 不选择范围标识而只将行插入数据库?我现在不需要它来了解它们的身份,所以插入后行是否知道它们的身份没有什么区别,但我猜我不能只告诉 Nhibernate 不要检索身份这种情况?

如果有任何后果,请使用 Fluent NH。

提前致谢。

最佳答案

NH 需要身份来管理缓存中的实体以识别它们。所以我认为没有解决办法。

您的性能问题不一定是由身份引起的。可能是您刷新 session 次数过多。尝试关闭自动刷新以验证它或使用 StatelessSession。

ORM 在大规模操作中不是很好。您应该考虑使用更底层的东西(例如 SQL)。

关于c# - 使用 NHibernate 将行插入数据库表而不在插入行后调用 scope_identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11361426/

相关文章:

c# - 网页生命周期是什么意思?

c# - 显示日期范围内的数据

c# - NHibernate SaveOrUpdate 子集合未使用标识 ID 更新

c# - 表值函数和 NHibernate

c# - 使用 EntityFramework 插入数据时线程被中止

c# - 防止 Revit 窗口打开

c# - 将 C 中的指针转换为 C#

mysql - 流利的 NHibernate 和 MySQL 转换语法?

c#-4.0 - NHIBERNATE WHERE 和 IQUERYOVER 的多个 OR 子句

nhibernate - 如何使用 FluentNHibernate 在 ManyToMany 生成的表中添加额外字段