2011-05-16 3 views
0

SQL 데이터베이스에서 트리거를 사용하여 테이블에 대한 변경 정보를 캡처하고 있지만 nhibernate에 문제가있는 것 같습니다.nhibernate 감사 트리거 오류

테이블에 몇 개의 열과 기본 키와 트리거가 있습니다. 트리거는 다음과 같습니다.

CREATE TRIGGER [dbo].[tr_Instrument_update] ON [dbo].[Instrument] FOR UPDATE AS 
BEGIN 
    INSERT [MyAudit].[audit].[Instrument] 
    SELECT 'Updated', i.* 
    FROM inserted 
    INNER JOIN [MyAudit].[dbo].[Instrument] i ON inserted.[InstrumentID] = i.[InstrumentID] 
END 

기본적으로 모든 변경시 감사 테이블에 행이 복사됩니다. 나는 시험과 내가 직접 SQL 관리 스튜디오를 통해 데이터를 수정하면 올바르게 기능을 트리거하고 난 내가 내 응용 프로그램을 업데이트하면 그러나 나는 다음과 같은 얻을, 감사 테이블에 기록 된 데이터를 얻을 수있다 :

NHibernate.StaleObjectStateException 했다 사용자 코드에 의해 처리되지 않은
메시지 = 행이 갱신 또는 삭제 다른 트랜잭션 (또는 저장되지 않은 값 매핑이 정확) 한

내가 트리거가 다른 데이터베이스에서 다른 테이블을 업데이트하기 때문에이 가정 어쨌든있다 nhibernate 만들기 변경 사항이 해당 데이터에 영향을 미치지 않으므로이를 무시하십시오. 매핑에서이 감사 데이터에 대한 참조가 없습니다.

답변

0

트리거가 Nhibernate가 어떤 이유로 두 가지 동일한 업데이트 호출을 수행하게 만들었다. 해결책은 트리거 안의 SET NO COUNT ON입니다. 아직도 nhibernate가 두 가지 업데이트를 만드는 이유는 확실하지 않습니다!