2011-09-06 3 views
0

일부 텍스트 상자와 저장 단추가있는 Windows Form이 있습니다. 양식이로드되면 텍스트 상자에는 모델의 엔터티 데이터가 채워집니다. 사용자가 저장 버튼을 클릭하면 각 텍스트 상자의 값이 엔티티에 다시 쓰여지고 SaveChanges가 호출되어 데이터를 데이터베이스에 커밋합니다.Entity Framework 4에서 변경된 필드 만 저장

내가 알고 싶은 것은 양식에 변경 사항이 있는지 확인하는 가장 좋은 방법은 무엇입니까? 변경 내용이 포함되어 있지 않으면 SaveChanges를 호출 할 필요가 없으며 레코드를 데이터베이스에 다시 저장할 필요가 없습니다. 변경 사항이 포함되어 있고 사용자가 저장 버튼을 클릭하지 않은 경우 변경 사항을 저장할 필요가 없다는 사용자의 확인을 얻고 싶습니다.

나는 엔티티의 필드를 업데이트 한 다음 SaveChanges를 호출하기 전에 해당 State 속성을 확인할 수 있다고 생각했지만 동일한 값이더라도 모든 필드를 업데이트하면 엔티티가 수정 된 것으로 표시됩니다.

그럼, 내 질문은, 실제로 SaveChanges를 호출하기 전에 폼에 변경 사항이 적용되었는지 확인하는 가장 좋은 방법은 무엇입니까?

감사합니다,

매트

+0

Entity Framework에서 사용하는 프로그래밍의 "스타일"은 무엇입니까? 데이터베이스 우선 (비주얼 디자이너/모델 포함)? 코드 첫 번째? –

+0

데이터베이스를 먼저 사용해야했습니다. – Matt

답변

0

당신은 엔티티의 상태를 확인할 수 있습니다. EntityStateEntityState.Unchanged 일 경우 텍스트 상자의 데이터를 엔터티로 보냅니다. 여기

상세 사항 :

+1

답장을 보내 주셔서 감사합니다. 불행히도 변경 사항이없는 경우에도 저장을 클릭하면 모든 텍스트 상자가 엔티티에 다시 쓰여집니다. 이는 모든 엔티티의 등록 정보가 수정 된 상태로 설정됨을 의미합니다. – Matt

0

http://msdn.microsoft.com/en-us/library/system.data.entitystate.aspx 사실도 이전이 수정 된 엔티티로이 올바른 비즈니스 규칙 대부분의 경우에 계산과 동일한 값으로 필드를 업데이트.

할 수있는 일은 양식 필드를 채우고 동등 비교자를 사용하여 현재 필드와 비교하는 데 사용한 원본 개체의 복사본을 유지하는 것입니다. 그것은 꽤 아니지만 그것은 개체 상태 관리자의 수정 된 의견에 의지 할 수없는 특별한 경우에 완료됩니다.

+0

답장을 보내 주셔서 감사합니다. 나는 이런 식으로해야한다고 생각 해왔다. 필자는 다음과 같은 이유로 올바른 비즈니스 규칙에 놀랐습니다. 사용자가 레코드를 찾으려고 페이징을하면 각 레코드를 다시 데이터베이스에 기록해야합니다. 유일한 대안은 사용자에게 프롬프트하고 사용자가 설명하는 시스템을 저장하거나 구현할지 묻는 것입니다. 아니면 내 건축이 완전히 잘못되었습니다! 답장을 보내 주셔서 다시 한 번 감사드립니다. – Matt