2012-03-23 2 views
1

Как обновить набор строк в Orchard?Обновление нескольких строк базы данных в Orchard

У меня есть массив идентификаторов клиентов. И я хочу установить для поля IsActive значение No для всех этих клиентов.

Я использую ContentManager или IRepository? И нужно ли мне перебирать и обновлять каждую строку или есть способ обновить все строки в одном выражении?

Спасибо.

ответ

2

Я бы не рекомендовал NHibernate Hibernate Query Language (HQL) для «пакетных обновлений», он делает вещи более трудными, когда сад будет обновить это ядро ​​с NHibernate 3.2 или выше, это будет гораздо быстрее, см для получения дополнительной информации http://fabiomaulo.blogspot.com/2011/03/nhibernate-32-batching-improvement.html

Если вы все еще хотите выполнить инструкцию по обновлению, вы можете использовать HQL в своем пользовательском репозитории, в базовом классе репозитория есть защищенное свойство, которое возвращает вам NHibernate ISession. С помощью этой NHibernate сессии и может Позвоните CreateQuery()

Только не забудьте использовать свое и имя класса propertynames, а не имена таблиц

Query query = session.createQuery("update Customers set IsActive = :isActive" + 
            "where Id in (1,2,3,4,5,6,)); 
query.setParameter("isActive", "false"); 
int result = query.executeUpdate(); 
1

Если у вас есть свой собственный стол, который не подключен к какой-либо ContentPart - придерживаться IRepository. ContentManager предназначен для управления элементами контента.

Путь IRepository Выполнение работ по внедрению в Орчард, вам необходимо пройти через всех клиентов.

Смежные вопросы