2012-08-14 2 views
3

EntityObject 내의 변경 내용을 보고서에 포함하여보고 싶습니다. 예를 들어Entity Framework에서 어떤 속성이 변경되었는지 검색합니다. EntityObject

:

이름 : 전에

위치

후 :

후이 작업을 수행하는 일반적인 방법이 있나요? 기본 엔티티 클래스 생성 (POCO 아님)으로 EF4를 사용하고 있습니다.

이러한 엔티티가 첨부되므로 변경 사항을 추적해야합니다. IEntityWithChangeTracker 인터페이스를 통해이를 수행 할 수있는 방법을 알 수 없습니다.

탐색 속성을 순회하는 것이 좋지만 변경된 프리미티브 속성을보고하는 것으로 충분합니다.

답변

8

엔터티에 대해 ObjectStateEntry을 검색하고 CurrentValuesOriginalValues의 내용을 확인할 수 있습니다. 시도해보십시오 (테스트되지 않음).

ObjectStateEntry entry = objectContext.ObjectStateManager.GetObjectStateEntry(entity); 
foreach (string property in entry.GetModifiedProperties()) { 
    object oldValue = entry.OriginalValues[property]; 
    object newValue = entry.CurrentValues[property]; 
} 

이렇게하면 탐색 속성을 처리하지 못하고 복잡한 유형에서 어떻게 작동하는지 잘 모르겠습니다.

+0

'string'속성에 대해이 기능을 테스트 해 보니 매력적이었습니다. 복잡한 유형과 탐색 속성을 가지고 있으므로 유용 할만한 것을 찾으면 나중에 시도하고 여기에 게시 할 것입니다. 대단히 감사합니다 Ladislav. –

+0

@ 라디 슬라브 EF6 & DbContext를 사용하면 어떻게 될까요? BTW - 귀하의 핸들은 코멘트 상자에서 자동 완성을 해독합니다. –

1

Ladislav Mrnka 님의 제안에 더하여 : 실제로는 일반적이지는 않지만 적어도 해결책 : Code Generation and T4 Text Templates이 가능합니다. 이렇게하면 모델이 생성 될 때 각 엔티티에 고유 한 사용자 정의 논리를 추가 할 수 있습니다.

필요한 경우 탐색 속성을 확인하는 데 필요한 통과 기능을 구현할 수 있습니다.

+0

T4 templating은 완전성을 위해 여기서 언급할만한 가치가 있지만 제 경우에는 적어도 기존 API를 사용하면 충분하고 일반적으로 더 쉽고 안전합니다. –

관련 문제