メッセージテーブルにプライマリキー(Id)と外部キー(サイト)がある状況があります。どのサイトでもメッセージレコードを作成できますが、レコードを作成したサイトだけが更新できます。問題は、デフォルトではIdとSiteではなくIdに基づいて更新されるということです。プライマリキーを、IDとサイトまたはNative SQLからなる複合/複合IDに変更することができます。しかし、追加の更新基準を追加する方法があるかどうかは疑問でした。例えば、これは、デフォルトで何を得るNHibernateを使用して更新コマンドに追加の基準を追加するにはどうすればよいですか?
されています:
public void MessageUpdate(Message oneMessage) { using(ISession session = SessionFactory.OpenSession()) using(ITransaction trans = session.BeginTransaction()) { session.Update(oneMessage); trans.Commit(); } }
だから私は、化合物のIDを作成したり、ネイティブSQLを使用せずにNHibernateでこれをどのように行うのか:
Update MessageTable set MessageStatus = 2 where Id = ? and Site = ?;
サイドノートとして、あなたのコードにsession.Updateは必要ありません。これに関する詳細はこちらhttp://www.tobinharris.com/past/2009/6/11/nhibernate-calling-update-unnecessarily/ – autonomatt