我正在尝试使用 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/