Как я могу заставить NHibernate произвести этот запрос t-sql?Обновление Top n с использованием NHibernate
Update сверху (п) Задачи набор МОДИФИКАЦИИ где УСЛОВИЕ
Я не хочу, чтобы сделать обновление Transaction + пакетной обработки.
Как я могу заставить NHibernate произвести этот запрос t-sql?Обновление Top n с использованием NHibernate
Update сверху (п) Задачи набор МОДИФИКАЦИИ где УСЛОВИЕ
Я не хочу, чтобы сделать обновление Transaction + пакетной обработки.
Пожалуйста, проверьте следующее:
привел фрагмент кода:
ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();
string hqlVersionedUpdate = "update versioned Customer set name = :newName where name = :oldName";
int updatedEntities = s.CreateQuery(hqlUpdate)
.SetString("newName", newName)
.SetString("oldName", oldName)
.ExecuteUpdate();
tx.Commit();
session.Close();
Итак, таким образом, мы можем defin UPDATE с HQL (с помощью нашей модели предметной области) и одновременное выполнение udpate на стороне БД
Примечание: для более подробной информации также проверить этот блог: NHibernate – Executable DML по Ayende
Я не вижу команду «Top» здесь, мне нужно обновить Juste 5 элементов, я знаю, что могу сделать ExecuteSqlQuery, но потом я вам нужно проверить DataProvider, потому что команда Top является специфичной для T-sql, в MySql мы используем Limit, мне бы понравилось, что Nhibernate генерирует конкретный запрос для меня, чтобы он работал на всех поставщиков данных. – user2425133
Я бы сказал, мы можем это иметь! ;) Проверьте эту строку в документе: * «... Подзапросы могут использоваться в предложении where, сами подзапросы могут содержать объединения ...» * используйте некоторые ТОП-5 запросов (подзапрос) для возврата набор идентификаторов для обновления ... и затем используйте DML! ;) мощный NHibernate - проверьте http://nhforge.org/doc/nh/en/index.html#queryhql-subqueries –
Большое спасибо! Я поставлю его в транзакцию для обеспечения безопасности, один запрос HQL может (или не может) выдавать много запросов sql (например, если мы запрашиваем не-сопоставленный базовый класс). – user2425133