winforms 폼에 바인딩 소스가있는 바인딩 탐색기가 있습니다. 내 데이터 소스는 엔티티 프레임 워크 목록에서 가져옵니다.바인딩 원본에 winforms 사용, 사용자가 레코드를 수정했는지 어떻게 알 수 있습니까?
I 버튼 이벤트를 내가 추가 및 편집이 충분히 쉽게됩니다 Julie Lerman Course at Pluralsight
에서 배운 기술을 사용하여, 내 바인딩 소스의 각 개체의 물리게을 추적, 난 그냥 추가로 작성하고 삭제를 할
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Added;
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Deleted;
}
그러나 EditItemClick 이벤트가 없습니다. 엔터티가 수정 된 경우 어떻게 추적합니까? 나는 도메인 클래스 사람의 연결이 끊긴 목록에 바인딩하고
참고
List<Person> people = MyRepository.GetPeople();
this.personBindingSource.DataSource =people;
this.personBindingNavigator.BindingSource = this.personBindingSource;
나는 IENtity
public interface IEntity
{
EntityState State { get; set; }
}
public enum EntityState
{
Unchanged,
Added,
Modified,
Deleted
}
과 사람이 그 [업데이트] 에서 상속하는 인터페이스 BindingSource에보고를 이벤트 속성을 볼 때 CurrentItemChanged 속성을 수정할 때 발생시키는 참조하십시오. 그러나 현재 항목 자체가 변경 될 때도 발생합니다.
제기 된 이유는 무엇입니까?
어떻게 당신이 결합되어
섹션을 읽어보십시오 : 당신은 수정되지 않은 상태에서 originalPeople을 다시 연결하고 반복적 인 방식에서의 수정 된 사람의 속성 변경 사항을 적용 할 데이터 값을 바인딩 탐색기의 컨트롤에 추가 하시겠습니까? 엔티티 프로퍼티를 컨트롤에 바인딩하는 경우 UI를 통해 값을 변경하면 자동으로 'EntityState.Modified'가 설정됩니다. 엔티티 트래커는 올바르게 바인딩하면이를 처리해야합니다. –
Thanks @DavidTansey 엔티티가 연결 해제되었음을 보여주기 위해 질문을 업데이트했습니다. –