2010-08-11 3 views
1

WPF/EF4.0/MVVM 응용 프로그램에서 Customer 엔터티를 편집하는보기가 있습니다. 내 CustomerViewModel에서 "bool IsCustomerInEditMode"속성을 설정하는 가장 좋은 방법은 Entity의 모든 개별 속성에 대해 OnChanging/OnChanged 부분 메서드를 사용할 때 부족합니다. 내가 아는 한 OnEntityChanging 메서드는 없습니다 ...Entity Framework - 모든 속성에 대해 OnChanging을 발생시키는 방법?

고마워요!

편집 : 답변 : EntityState

+0

스칼라 속성이 변경되면 변경 사항을보고하는 속성을 얻는 방법 - 내 질문 중 하나에 대답하기 때문에 Scott의 대답이 정확하다고 표시했습니다 .____ 그러나 내 질문에 대한 대답은 IsCustomerInEditMode = SelectedCustomer.EntityState == EntityState.Modified 사용) || (SelectedCustomer.EntityState == EntityState.Added) –

+0

가능한 복제본 [Entity Framework : 속성 변경시 이벤트 발생 방법] (http://stackoverflow.com/questions/5623000/entity-framework-how-to-raise) -an-event-on-property-change) – Matt

답변

3

편집 : 이 게시물에 (부울 IsCustomerInEditMode 설정하는 가장 좋은 방법은) 귀하의 질문에 대답하려면 - 그것은 IsCustomerInEditMode을 설정 내부의 entity.PropertyChanging 이벤트를 구독

을 == 참된; entity.PropertyChanged 이벤트를 구독합니다. IsCustomerInEditMode == false;

나는 당신이 찾고있는 이벤트를 InstanceOfYourCustomer.PropertyChanging 및 InstanceOfYourCustomer.PropertyChanged라고 생각합니다. 엔티티의 모든 생성 된 속성에 대해 속성이 변경되면 이벤트가 발생합니다 (부분 클래스를 사용하여 엔티티에 속성을 추가하는 경우가 아니면 해당 속성의 설정자에서 ReportPropertyChanging 및 ReportPropertyChanged에 대한 호출을 추가해야합니다.). 내가 EF4를 사용하여 내 Model.Designer.cs 파일을 찾고 있어요

http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.structuralobject.propertychanged.aspx

http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.structuralobject.propertychanging.aspx

... 내 실체 '속성'세터의 모든 ReportPropertyChanging를 호출하고 ReportPropertyChanged ...하는 것입니다 엔티티에서 PropertyChanging 및 PropertyChanged 이벤트를 발생 시키면 args는 변경된 이벤트를 발생시킨 특정 속성을 알려줍니다.

+0

Scott, 답해 주셔서 감사합니다. customerInstance.PropertyChanging 이벤트를 볼 수 있습니다. 이것이 제가하려는 일의 열쇠일지도 모릅니다. 보고있는 ReportPropertyChanging 호출은 전체 속성이 아닌 개별 속성에 대한 호출입니다. 아직 확실하지 않지만 찾고있는 것이 수정 된 보고서이고 내 IsCustomerInEditMode 속성에 할당 할 수있는 EntityObject.EntityState입니다. –

+0

문제를 해결할 수있어서 다행입니다! 나는 틀릴 수도 있지만 ReportPropertyChanging이 실제 엔티티의 PropertyChangingEvent를 발생 시킨다고 생각했습니다. 나는이 호출에 대한 매개 변수가 변경되는 엔티티의 특정 속성의 문자열 값이라는 것을 알고 있지만 PropertyChanging 이벤트의 이벤트 인수가 엔티티의 어떤 속성이 실제로 이벤트를 발생 시켰는지를 지정할 수 있다고 생각합니다. 우리는 달리 알 수있는 방법이 없기 때문에). 그럼에도 불구하고 EntityState가 커밋 될 때까지 '편집 상태'에 있기를 원하는 것처럼 보이기 때문에 EntityState가 더 나을 것입니다. – Scott

관련 문제