2017-09-16 10 views
0

私はテーブル(InquiryTable)を持っており、まずレコードをいくつか選択します。これらのレコードをデータベースから抽出してデータベースに更新します。しかし、私はこれらの2つのコマンドをnhibernateで同時に(1つにマージする)どのように行うことができるかを知る必要があります。特別な条件でレコードを更新するnhibernate

私は、1つのコマンドでSession.QueryとSession.Updateをマージしたいと思っています。つまり、同じクエリ内のどこで更新が必要なのかを意味します。この概念に収まるように何

答えて

0

はすでに議論、自動的かつ透過的なオブジェクト/リレーショナルマッピング は、オブジェクトの状態の管理に関係あるNHiberante DML

13.3. DML-style operations

です。これは、オブジェクトの状態がメモリに利用可能であること 意味し、従って (SQLデータ操作言語(DML)のステートメントを使用して:INSERT、 更新、削除)操作データベースに直接データが メモリ内の状態に影響を与えないであろう。しかしながら、Hibernate Query Language(HQL) を実行するSQLスタイルのDMLステートメントの実行は、Hibernate Query Language(HQL) バルクのためのメソッドを提供します。

この機能セットは、ないICriteriaまたはQueryOverの上に構築されているが、それはHQLを使うん。ドキュメントから

たとえば、1回のショットでフィルタリングされたデータの更新を実行:

string hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName"; 
// or string hqlUpdate = "update Customer set name = :newName where name = :oldName"; 
int updatedEntities = s.CreateQuery(hqlUpdate) 
     .SetString("newName", newName) 
     .SetString("oldName", oldName) 
     .ExecuteUpdate(); 

も参照してください:

関連する問題