2013-11-27 3 views
0

HasChanges가 변경되었을 때 이벤트를 만들도록 관찰 할 수있는 EF6 ChangeTracker에는 무엇이 있습니까?엔터티 프레임 워크 변경 추적기

기본 사용은 컨텍스트가 변경 사항을 등록 할 때보기 모델에서 SAVE 버튼을 켜는 것입니다.

+0

다른 사용자가 작업중인 레코드를 변경하면 HasChanged가이를 알리고 이벤트를 발생 시키길 원하십니까? – Scottie

+0

아니요, 컨텍스트 변경 추적기에 속성 변경 사항이있을 때마다 이벤트가 필요합니다. – codeputer

답변

0

이것은 나에게 잘못되었습니다. 뷰는 뷰 모델에 변경 사항을 알려야합니다 (일반적으로 뷰를 뷰 모델에 바인딩하여 INotifyPropertyChanged 구현). 그런 다음보기 모델은 데이터 계층에 도달하지 않고 직접 저장할 필요성을 노출시킬 수 있습니다. ReactiveUI과 같은 라이브러리를 사용하면이 작업을 쉽게 수행 할 수 있습니다.

그러나 악의 있고 싶다면 (예,이 점에 대해의 견이 있습니다!) 수 있습니다. 타이머에서 확인하십시오. 당신이보기에 걸쳐 상황을 공유하고 있기 때문에 나는이 일에 대해 생각할 수있는 유일한 이유는 -하지만 여전히 아주 나쁜 이유 :이 길을 내려 가면

var hasChanges = Observable.Interval(TimeSpan.FromSeconds(0.5)) 
          .Select(_ => DbChangeTracker.HasChanges); 

hasChanges.ObserveOnDispatcher.Subscribe(i => /* logic to set save button state */); 

, 당신은 또한 DbChangeTracker.HasChanges을 확인 할 것 저장되지 않은 변경 사항을 잃지 않도록보기 전에 종료해야합니다.

+0

이 시점에서, 나는 당신과 동의하고 있습니다 - 나는 폴링하지만 경량을 믿지 않기 때문에. 그러나 EF 팀이 HasChanges 속성과 이벤트를 연관시키지 않는 이유에 대해 궁금합니다. VM 디자인이 절대적으로 유지되면 HasChanges 속성도 필요하지 않습니다. VM이 속성이 언제 변경되었는지 항상 알 수 있기 때문입니다. 아직도 오픈 소스이기 때문에 아마도 누군가 (예를 들자면 나는) setter가 호출 될 때 이벤트를 연결하려고 할 것입니다. EF 팀의 누구에게이 옵션을 줄 수 있습니까? – codeputer