메시지 테이블에 기본 키 (Id)와 외래 키 (Site)가있는 상황이 있습니다. 모든 사이트는 메시지 레코드를 만들 수 있지만 레코드를 만든 사이트 만 업데이트 할 수 있습니다. 문제는 기본적으로 Id 및 Site가 아니라 Id를 기준으로 업데이트된다는 것입니다. 기본 키를 ID와 사이트로 구성된 복합/복합 ID로 변경하거나 원시 SQL로 변경할 수 있습니다. 그러나 추가 업데이트 기준을 추가하는 방법이 있는지 궁금합니다.NHibernate를 사용하여 업데이트 명령에 추가 기준을 어떻게 추가합니까?
예를 들어, 이것은 기본적으로 무엇을 얻을 수 있습니다 :
public void MessageUpdate(Message oneMessage) { using(ISession session = SessionFactory.OpenSession()) using(ITransaction trans = session.BeginTransaction()) { session.Update(oneMessage); trans.Commit(); } }
그래서 어떻게 네이티브 SQL을 복합 ID를 만들거나 사용하지 않고 자 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