在Orchard中更新多个数据库行

时间:2012-03-23 00:48:07

标签: orchardcms

如何在Orchard中更新一组行?

我有一系列客户ID。我想为所有这些客户设置IsActive字段为No。

我是否使用ContentManager或IRepository?我是否必须遍历并更新每一行,或者是否有办法更新一个语句中的所有行?

感谢。

2 个答案:

答案 0 :(得分:2)

我不推荐 NHibernate Hibernate Query 语言(HQL)进行“批量更新”,这会让事情变得更加困难,当Orchard将其核心升级到NHibernate 3.2或更高版本时,它会更快,有关详细信息,请参阅http://fabiomaulo.blogspot.com/2011/03/nhibernate-32-batching-improvement.html

如果您仍想执行更新语句,您可以在自定义存储库中使用HQL,Repository基类中有一个受保护的属性,它返回NHibernate ISession。使用这个NHibernate会话你可以调用CreateQuery()

请记住使用您的类名和属性而不是表名

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 :(得分:1)

如果您有自己的桌子,但没有连接到任何ContentPart,请坚持IRepositoryContentManager用于管理内容项。

IRepository实施方式在Orchard中运行,您需要遍历所有客户。