2008-10-07 5 views
0

내가 IEditableObject를 구현하는 주소 클래스가있는 경우,이 같은 지며 EndEdit 구현이있을 수 있습니다 예외가 다음 _city있는 경우어떻게 IEditableObject.EndEdit를 어토 단위로 만들 수 있습니까?

public void EndEdit() 
{ 
    // BeginEdit would have set _editInProgress and save to *Editing fields 
    if (_editInProgress) 
    { 
     _line1 = _line1Editing; 
     _line2 = _line2Editing; 
     _city = _cityEditing; 
     _state = _stateEditing; 
     _postalCode = _postalCodeEditing; 
     _editInProgress = false; 
    } 
} 

을 _line1, _line2 및 가능한 경우 _city으로 변경해야합니다. 이 문제는 EndEdit으로 제한되지 않지만 다른 장소에서도 발견 될 수 있습니다.

답변

1

System.Transactions에서 TransactionScope를 사용해 보셨습니까? 이렇게하면 코드 블록이 트랜잭션 처리되며 예외가 발생하면 자동으로 변경 사항이 롤백됩니다.

CommittableTransaction을 사용하는 경우 커밋 및 롤백을 더 많이 제어 할 수 있으므로이를 고려할 수 있습니다.