Можно ли пакетировать различные вставки / IDbCommands вместе с Nhibernate? - PullRequest
0 голосов
/ 10 декабря 2011

Пример 1, следующая вставка приводит к 2 пакетам независимо от вашей конфигурации:

INSERT INTO <b>entitytable1</b> (someInt) VALUES (1)
INSERT INTO <b>entitytable2</b> (someInt) VALUES (3)
-- Notice tables are <b>different</b>
-- Results in <b>2</b> round trips to the db
-- C# code that can generate such statements:
   session.Save(typeof(entitytable<b>1</b>), new entitytable<b>1</b>{someInt = 1})
   session.Save(typeof(entitytable<b>2</b>), new entitytable<b>2</b>{someInt = 3})
   transction.Commit();

Однако, в примере 2 ниже, вставки приводят к 1 партии:

INSERT INTO <b>entitytable1</b> (someInt) VALUES (1)
INSERT INTO <b>entitytable1</b> (someInt) VALUES (3)
-- Notice tables are the <b>same</b>
-- Results in <b>1</b> round trip to the db
-- C# code that can generate such statements:
   session.Save(typeof(entitytable<b>1</b>), new entitytable<b>1</b>{someInt = 1})
   session.Save(typeof(entitytable<b>1</b>), new entitytable<b>1</b>{someInt = 3})
   transction.Commit();

Можно ли заставить пример 1 работать как 2, то есть отправлять разные вставки, объединенные в БД (например, 1 туда-обратно)?

Определение пакетирования для немногих: для отправки нескольких выписок / вставок, сгруппированных вместе, до Ado_Batch_size, в базу данных за один прием.

Показанный выше sql генерируется Nhibernate, конечно! Это то, что вы увидите на NHProfiler.

Версия: Nhibernate 3.2

1 Ответ

1 голос
/ 11 декабря 2011

В соответствии с пакетная вставка nHibernate не работает с ассоциациями (которые уже найден исходный плакат), похоже, что это не поддерживается текущей версией NHibernate.

Статья Профилирование NHibernate Batching , кажется, подтверждает это и предлагает использовать сеансы без сохранения состояния (которые, к сожалению, игнорируют ассоциации).

В качестве альтернативы этот ответ предлагает использовать HQL.

Предостережение: я не пользователь NHibernate. Обязательно проверьте фактическое поведение с NHProfiler.

...