2012-10-30 4 views
0

엔티티를 깊게 복제해야합니다 (새 엔티티의 패턴으로 기존 엔티티를 사용하려면). 여러 접근법을 발견했지만 모두 직렬화가 포함됩니다. 우리의 엔티티는 Serializeable이 아닌 ObservableObject의 MVVM Toolkit에서 파생되었으므로 이러한 접근 방식을 사용할 수 없습니다.직렬화가없는 딥 클론 엔티티

이렇게하는 가장 좋은 방법은 무엇입니까?

.net 4.5 및 EF5와 WPF를 사용하고 있습니다.

+0

에서 볼 수있다, 또한, DeepCloner입니까? 충분한 반영을 통해 모든 것이 직렬화됩니다. – LightStriker

+0

사이드 노트 : 이미 사용자 이름 [FAQ] (http://stackoverflow.com/faq#signatures)에 서명 했으므로 질문에 서명을 추가하지 마십시오. –

+0

그것은? 예를 들어 줄 수 있습니까? 직렬화를 많이 사용하지 않았습니다 ... – TheJoeIaut

답변

1
  1. 한 가지 방법은 복제를 수행 할 사용자 지정 코드를 작성하는 것입니다. 주어진 객체, 새로운 인스턴스, 그리고 각각의 프로퍼티에 대해 그 프로퍼티의 깊은 사본을 줄 몇몇 코드를 작성합니다. 아마도 복합 프로퍼티에 대한 객체 그래프를 반복적으로 연결시킬 것입니다.

  2. 또 다른 옵션은 중요한 데이터를 저장하고 직렬화 한 다음 해당 직렬 직렬화 가능 모델의 데이터를 deserialize하여 새 엔터티 개체로 복원하는 모델을 만드는 것입니다.

0

딥 복제에는 일부 라이브러리를 사용할 수 있습니다. 수동 구현보다 속도가 느립니다. 수동 구현에서는 필요한 속성 만 복사하여 작업을 최적화 할 수 있지만 일반적으로이 라이브러리는 일반 복사에 유용합니다.

나의 마음에 드는 정확히 직렬화 할 수없는 이유는 CloneExtensions