2012-03-23 4 views
1

オーチャードの行を更新するにはどうすればよいですか?オーチャードで複数のデータベース行を更新する

私は顧客IDの配列を持っています。そして、これらのすべての顧客に対してIsActiveフィールドをNoに設定したいと思います。

私はContentManagerまたはIRepositoryを使用しますか?また、各行をループして更新する必要があるのですか、ある文ですべての行を更新する方法がありますか?

ありがとうございました。

答えて

2

オーチャードは、それがより多くの情報を参照、たくさん速くなりますNHibernateは3.2以上にコアのアップグレードされた場合、それは、物事がより困難にhttp://fabiomaulo.blogspot.com/2011/03/nhibernate-32-batching-improvement.html

あなたがカスタムリポジトリでHQLを使用することができる更新ステートメントを実行したい場合は、NHibernateのSessionを返すリポジトリベースクラスの保護されたプロパティがあります。この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に接続されていない独自のテーブルがある場合は、IRepositoryに固執してください。 ContentManagerは、コンテンツアイテムを管理するためのものです。

オーチャードでの実装方法はIRepositoryです。すべての顧客をループする必要があります。私は「バッチ更新」のためNHibernateのにHibernateクエリ言語(HQL)をお勧めしません

関連する問題