OracleDependency는 쿼리 만 모니터링 할 수 있다는 것을 알고 있습니다. 나는 2 개의 명령 객체와 2 개의 의존 객체를 만들었지 만 둘 다에 대한 질의는 where 절이 다르므로이 테이블의 두 개의 다른 부분 집합을 조사해야한다.C# OracleDependency OnChange 여러 번 실행합니다.
같은 콜백에 이러한 종속성 개체를 모두 할당합니다. 내 기대는 테이블에서 뭔가를 변경하면 OnChange 이벤트가 해당 종속 개체에서 발생한다는 것입니다. 그때 TEH 변화를 트리거 쿼리를 얻을 수있는 OnChange 이벤트에 다음을 수행 할 수있을 것입니다 :
OracleDependency OraDep = (OracleDependency)sender; string sql = (string)OraDep.RegisteredResources[0];
그래서 설치 다른 where 절 값이 동일한 테이블에 대해 2 개 쿼리. 그런 다음 DB로 가서 그 중 하나를 변경하지만 놀랍게도 OnChange는 두 번 발생합니다. 위의 코드는 쿼리를 통해 두 쿼리를 모두 보여줍니다.
전체 테이블이 아닌 특정 쿼리에 대한 의존성을 가질 방법이 없습니까? 나는 당신이 특정 쿼리를 위해 어딘가에 그것을 읽었을 것이라고 생각했다.
나는 그 때 문제가다는 것을 나는 생각한다. 이 변화 사건에서 저는 무엇이 바뀌 었는지 알아야합니다. 이 정보를 보여주기 위해 내가 볼 수있는 것 같지 않습니다. 내가 통과 한 cmd에 where 절이있는 예제를 보았지만 이상하게 보일 수는 있지만, 여전히 C# 응용 프로그램에서 무엇이 변경되었는지 알 필요가 있습니다. – user441521
"무엇이 바뀌 었는가"라는 것이 무엇인지 명확히하자. 나는 변경된 레코드 (msg 유형이 업데이트 일 때)가 아니라 테이블이 변경된 것을 의미합니다 (cmd를 설정 한 이후로 알 수 있듯이). – user441521
@ user441521 업데이트에만 관심이 있으므로 이벤트 처리기에서 if if (e.info.ToString() == "Update") if 조건을 가질 수 있습니다. {Process} else ignore. –