2014-03-29 2 views
0

CodeFirstEF6을 상태에 대한 개별 매핑과 함께 사용하고 있습니다.엔티티 게시물 저장에서 EF6이 속성을 되돌릴 수 없게하는 방법이 있습니까?

  1. 이 (상태가 '추가'됩니다) 엔티티까지 새로운 만들기 :

    나는 다음과 이상한 시나리오가 있습니다.
  2. 는까지 새에 종가, 즉 99 .01m '를 할당합니다.
  3. DB에 저장하십시오 (성공적으로 저장 될 때까지).
  4. 은 즉, 주문 항목이 성공적으로 순서에 따라 값을 닫을 때까지/s의
  5. 업데이트를 객체 '101.01m'을 만들기 수주 객체
  6. 을 만듭니다.
  7. 주문 개체를 DB에 저장합니다 (상태가 '추가'되어 성공적으로 저장 됨).
  8. 저장 후 닫기 값을 검사하십시오.

    Cache.TodaysCashDraw.ObjectState = ObjectState.Unchanged; 
    

    값은 복귀에 관계없이 객체 상태의 적용 여부 :

  9. 내가 명시 적으로까지 표시하면 101.01 실제로 99.01m

입니다 예상 종가까지 관찰 . 다음 99.01m 수정 된 난을 표시하지만 경우

Cache.TodaysCashDraw.ObjectState = ObjectState.Modified; 

는 DB에 최선을 다하고 있습니다.

근본적으로 개체가 변경 될 때까지 나타나는 모든 변경 사항은 되돌릴 수 있지만 지금은 문제가되지 않지만 이유에 대한 설명을 원하십니까? 이상적으로 나는 위와 같이 되돌아 가지 않고 지속될 수있는 대상물에 대한 나의 변화를 원합니다. 그 때까지는 근무 시간 중에 여러 번 변경 될 것이므로 필요할 때만 변경 사항을 적용하고 싶습니다. 주문과 아이템은 바로 저장해야하지만 메모리의 Till 오브젝트는 처리 된 주문을 반영해야합니다. 이것이 EF4와 DB First에서 잘 작동하는 현재의 생각과 접근 방식입니다.

이 문제를 해결하는 이상적인 방법은 무엇입니까?

불완전한 백업 계획은 변경 사항이 바로 적용될 때까지 커밋하는 것입니다. 당신은 그것의 상태를 저장해야 할 때, 단지 그것을 다시 부착 그런

  // detach the till to prevent it from being tracked. 
      Cache.TodaysCashDraw.ObjectState = ObjectState.Detached; 

:

  _ctx.Context.Set<CashDrawsMony>().Attach(_till); 

연결이 끊긴 시나리오에있을 것입니다

답변

0

한 가지 방법은 문제의 실체를 분리하는 것입니다 이것은 내 문제를 완전히 해결합니다.

더 유머러스 한 메모에서 실제로 Attach 메서드를보고 궁금해했습니다. =)

관련 문제