엔티티를 깊게 복제해야합니다 (새 엔티티의 패턴으로 기존 엔티티를 사용하려면). 여러 접근법을 발견했지만 모두 직렬화가 포함됩니다. 우리의 엔티티는 Serializeable이 아닌 ObservableObject의 MVVM Toolkit에서 파생되었으므로 이러한 접근 방식을 사용할 수 없습니다.직렬화가없는 딥 클론 엔티티
이렇게하는 가장 좋은 방법은 무엇입니까?
.net 4.5 및 EF5와 WPF를 사용하고 있습니다.
엔티티를 깊게 복제해야합니다 (새 엔티티의 패턴으로 기존 엔티티를 사용하려면). 여러 접근법을 발견했지만 모두 직렬화가 포함됩니다. 우리의 엔티티는 Serializeable이 아닌 ObservableObject의 MVVM Toolkit에서 파생되었으므로 이러한 접근 방식을 사용할 수 없습니다.직렬화가없는 딥 클론 엔티티
이렇게하는 가장 좋은 방법은 무엇입니까?
.net 4.5 및 EF5와 WPF를 사용하고 있습니다.
한 가지 방법은 복제를 수행 할 사용자 지정 코드를 작성하는 것입니다. 주어진 객체, 새로운 인스턴스, 그리고 각각의 프로퍼티에 대해 그 프로퍼티의 깊은 사본을 줄 몇몇 코드를 작성합니다. 아마도 복합 프로퍼티에 대한 객체 그래프를 반복적으로 연결시킬 것입니다.
또 다른 옵션은 중요한 데이터를 저장하고 직렬화 한 다음 해당 직렬 직렬화 가능 모델의 데이터를 deserialize하여 새 엔터티 개체로 복원하는 모델을 만드는 것입니다.
딥 복제에는 일부 라이브러리를 사용할 수 있습니다. 수동 구현보다 속도가 느립니다. 수동 구현에서는 필요한 속성 만 복사하여 작업을 최적화 할 수 있지만 일반적으로이 라이브러리는 일반 복사에 유용합니다.
나의 마음에 드는 정확히 직렬화 할 수없는 이유는 CloneExtensions
에서 볼 수있다, 또한, DeepCloner입니까? 충분한 반영을 통해 모든 것이 직렬화됩니다. – LightStriker
사이드 노트 : 이미 사용자 이름 [FAQ] (http://stackoverflow.com/faq#signatures)에 서명 했으므로 질문에 서명을 추가하지 마십시오. –
그것은? 예를 들어 줄 수 있습니까? 직렬화를 많이 사용하지 않았습니다 ... – TheJoeIaut