2014-07-04 4 views
0

사용자 정의 유효성 검사기를 추가 한 탐색 속성이 있습니다.breeze : 변경시 탐색 속성 확인

유효성 검사기는 엔티티를 저장할 때 정상적으로 트리거됩니다. 그러나 탐색 속성에서 엔티티를 추가/제거 할 때 트리거되지 않습니다.

propertyChanged 이벤트를 구독해야합니까, 아니면이를 처리 할 수있는 다른 방법이 있습니까?

또한 속성 변경에 가입하지 않아도 속성마다 propertyChanged 이벤트가없는 이유는 무엇입니까?

답변

2

두 가지 종류의 탐색 속성 인 스칼라 및 비 스칼라가 있습니다. 스칼라 속성은 'Order.Customer'와 유사합니다. 여기에는 주문과 연관된 단일 고객이 있습니다. 이 경우 고객을 설정하거나 변경하면 entityAspect.propertyChanged 이벤트가 발생합니다.

'Customer.Orders'와 같은 비 스칼라 속성의 경우 속성에 액세스하면 고객과 관련된 주문 배열이 반환됩니다.

항상 같은 배열입니다. 주문을 추가하거나 제거 할 수 있지만 반환 된 배열 자체는 항상 동일합니다. 배열 자체는 절대로 변경되지 않기 때문에이 작업에서는 속성 변경이 실행되지 않습니다.

하지만 배열 자체를 변경하여 볼 수는 있지만 breeze API 문서의 arrayChanged event 을 참조하십시오.

특정 속성이 변경된 경우에만 실행되도록 등록 할 수있는 별도의 이벤트가없는 이유는 현재 메커니즘이이를 수행하는 기능을 지원하는 동시에 그와 같은 사용 사례를 허용한다는 것입니다 잠재적으로 수만개의 이벤트가 될 수있는 것을 등록 할 필요없이 엔티티에 대한 모든 변경 사항을보고 싶습니다.

존재하는 경우 엔티티 속성 수준 이벤트는 캐시에있는 엔티티 (100 또는 1000)에 엔티티의 속성 수 (5-50)를 곱한만큼 등록해야합니다.

여기에 설명 된 대부분은 다양한 프로그래밍 언어에서 다양한 환경에서 개체 변경 추적을위한 표준입니다. 우리는 아이디어를 재발견하려하지 않았지만, 꽤 일반적인 표준을 다시 구현했습니다.

+0

arrayChanged 이벤트는 훌륭합니다. 감사 ! – Sam

관련 문제