2011-05-06 2 views
0

.NET 3.5 응용 프로그램에서 EF v1 및 속도 캐시를 사용하고 있습니다. 내 캐시 된 개체는 데이터베이스에서 엔터티 모델을 표현한 것입니다. 그래서 EF v1을 POCO 어댑터와 함께 사용하기로 결정했습니다. 따라서 캐시에서 객체를 읽는 엔티티 액세스 레이어가 있으며, 존재하지 않는 경우이를 데이터베이스에서 읽고 즉시 캐시합니다. 이제는 업데이트가 필요한 유스 케이스에서 더티 POCO를 데이터베이스에서 업데이트해야한다. 이제 변경 사항을 추적하는 백업 객체가 필요하기 때문에 POCO 어댑터와 프록시를 직접 사용할 수 없습니다. 변경 감지가 일어나지 않도록 프레임 워크에서 어댑터 객체를 수화 한 적이 없습니다. 내가 보는 가장 쉬운 방법은 다음과 같습니다.Entity Framework v1 및 캐시 된 POCO 업데이트

  1. 업데이트하기 전에 엔티티를 읽으십시오. POCO에서 어댑터 값을 설정하십시오. 변경 감지가 진행되도록하십시오. 이것은 많은 관련 엔티티를 고려할 때 비용이 많이 드는 업데이트가 있기 전에 선택을합니다.
  2. 새 Entity 개체를 만듭니다. 엔터티 키와 속성을 POCO에서 설정하십시오. 변경 사항을 저장하다. 속성/관련 엔티티가 변경되지 않은 경우에도 불필요한 쓰기가 수행됩니다.

나는이 문제 진술 문에서 분명히 희망을 품는다. 제발 제안 해주세요.

답변

0

사실 1.와 2.는 같습니다. 분리 된 객체의 변경 사항이 엔티티 컨텍스트로 변환되는지 확인하려면 엔티티 전체와 함께 (연관과 함께) 읽어야합니다. 이 방법의주의 사항은 다음과 같습니다 1. 읽기 전에 갱신 2. 부실은

내가 해달라고 (분리 된 객체의 모든 속성이 업데이트됩니다 이후 우리가 정말 우리가 변경 무엇을 해달라고하기 때문에, 우리는 staler 값을 업데이트 끝낼 수 있습니다) 글 그러나 만약에 2.가 비즈니스 요구 사항에 중요하다면 (오래된 값으로 덮어 쓸 여지가 없다는 것을 의미하고 "IsChangedProperty"로 변경하는 필드를 추적하고 해당 필드 만 업데이트하십시오.) 이것은 매우 고통스럽지 만 유감스럽게도 EF v4도 v1도 분리 된 물건을 가지고 있지 않다면 (

)