NHibernate adonet.batch_size 不工作

标签 nhibernate

我将 adonet.batch_size 设置为 10,但是当我对对象图进行保存时,它会将对象及其所有子对象保存在单独的数据库调用中。

我可以使用 NHProf 工具看到这一点。

-- statement #1
INSERT INTO Preferences
-- statement #2
INSERT INTO PreferencesToWidgets
-- statement #3
INSERT INTO PreferencesToWidgets
-- statement #4
INSERT INTO PreferencesToWidgets
-- statement #5
INSERT INTO PreferencesToWidgets
-- statement #6
INSERT INTO PreferencesToWidgets
-- statement #7
INSERT INTO PreferencesToWidgets
-- statement #8
INSERT INTO PreferencesToWidgets
-- statement #9
INSERT INTO PreferencesToWidgets
-- statement #10
INSERT INTO PreferencesToWidgets
-- statement #11
INSERT INTO PreferencesToWidgets
-- statement #12
INSERT INTO Users

Users 与 Preferences 是一对多的
首选项与 PreferencesToWidgets 是多对一的

基本上,我有一个用户,我为其添加了偏好,并且该偏好添加了一堆偏好到小部件。

然后我调用 session.SaveOrUpdate(user),所有对象都插入到单独的调用中,即使批量大小设置为 10。

我正在通过 FluentNHibernate 进行配置。

Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2005.ConnectionString(c => c.FromConnectionStringWithKey( connectionStringKey ) )
.ProxyFactoryFactory( "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu" ) )
.Mappings( m => m.FluentMappings.AddFromAssembly( typeof( SessionFactoryFactory ).Assembly ) )
.ExposeConfiguration( cfg => cfg.SetProperty( "generate_statistics", "true" ) )
.ExposeConfiguration( cfg => cfg.SetProperty( "adonet.batch_size", "10" ) )
.BuildSessionFactory();

最佳答案

我想我在提交后立即找到了答案。这是因为我正在使用 SQL Server 为我生成 id,所以查询需要选择回插入的 id。我实际上可以在 NHProf 中看到这一点,但没有看到。

INSERT INTO PreferencesToWidgets
...
select SCOPE_IDENTITY()

NHibernate 2.1.0.4000 doesn't seem to like batch insert

关于NHibernate adonet.batch_size 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1214487/

相关文章:

nhibernate在多对一实体上生成左外部联接

nhibernate - 一级缓存可以与 ICriteria 或其他 API 一起使用吗?

nhibernate - 'NHibernate.Cfg.Configuration' 的类型初始值设定项引发异常

c# - System.Generic.List 流利的 nhibernate 没有持久性

NHibernate - 查询特定列并返回不同的记录?

.net - NHibernate.Spatial是否与NHibernate 3.0兼容?

c# - 使用 nHibernate 序列化 DetachedCriteria

asp.net - ASP.NET MVC 中的 NHibernate 事务管理 - 应该如何完成?

NHibernate QueryOver Have 子句

c# - 如何使用 NHibernate 检索列表中具有条件的元素