2012-03-23 33 views
1

如何更新Orchard中的一組行?我有一個客戶ID數組。我想將所有這些客戶的IsActive字段設置爲否。在Orchard中更新多個數據庫行

我是否使用ContentManager或IRepository?我是否必須遍歷並更新每一行,或者是否有方法更新一條語句中的所有行?

謝謝。

回答

2

我不會推薦NHibernate的Hibernate查詢語言(HQL)爲「批量更新」,這讓事情變得更加困難,在烏節將升級它的核心NHibernate的3.2或更高版本這將是快得多,更多信息請參見http://fabiomaulo.blogspot.com/2011/03/nhibernate-32-batching-improvement.html

如果你仍然想執行更新語句,你可以在你的定製倉庫中使用HQL,倉庫基類中有一個受保護的屬性,它返回NHibernate ISession。使用此NHibernate的會議U可以調用的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 - 堅持IRepositoryContentManager用於管理內容項目。

IRepositoryIRepository在烏節路上的實施,你需要遍歷所有客戶。