如何在Orchard中更新一组行?
我有一系列客户ID。我想为所有这些客户设置IsActive字段为No。
我是否使用ContentManager或IRepository?我是否必须遍历并更新每一行,或者是否有办法更新一个语句中的所有行?
感谢。
答案 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,请坚持IRepository
。 ContentManager
用于管理内容项。
IRepository
实施方式在Orchard中运行,您需要遍历所有客户。