2010-04-24 4 views
1

내 고객은 변경 사항이 자동 저장되는 Microsoft OneNote와 같은 프로그램을 좋아하며 명시 적으로 변경하려고 할 때이를 취소하도록 선택할 수 있습니다. 일부 실행 취소 기능을 구현해야하지만 다른 시간에이를 이해할 것입니다.WPF/MVVM/NHibernate에서 자동 저장 구현

NHibernate를 사용하면 모든 단일 속성/바인딩 변경시 ISession.Update를 호출 할 수 있다고 생각하지만이 접근법을 통해 실제 고통을 볼 수 있습니다. 나는 타이머의 팬이 아니라 속성/바인딩 변경에서 시작하여 타이머 끝에서 BackgroundWorker 스레드를 사용하여 db에 저장하는 5 초 타이머 일 수 있습니다.

당신은 어떻게 생각하십니까?

답변

1

모든 속성 변경에 대한 ISession.Update는 일반적으로 좋은 생각이 아닙니다. 속성 변경 이벤트는 꽤 자주 발생합니다. 모든 변경 사항에 대해 ISession.Update를 수행하면 응용 프로그램 속도가 느려질 수 있습니다. 이것은 아마 나쁜 사용자 경험으로 이어질 것입니다.

우리 응용 프로그램에서도 동일한 동작을합니다. 보기가 닫히면 변경 사항을 저장합니다 (다른 관련 이벤트). 예를 들어 사용자가 탭을 닫으면 해당 탭에 표시된 데이터가 닫힙니다.

응용 프로그램이 충돌하거나 예기치 않은 상황이 발생할 때 데이터 손실을 막기 위해 타이머를 추가하는 것이 좋습니다.