2010-08-02 3 views
1

POCO 클래스를 직렬화 할 수 있습니까? C# POCO 엔터티 생성기를 사용하고 있습니다.POCO 개체 직렬화

엔티티 클래스를 생성하는 .tt 파일을 편집하여 Serializable 특성을 추가하려고했습니다. 맞아?

답변

2

순수 POCO가 아닌 POCO 프록시를 사용하고 있습니다. 순수 POCO는 (분명히) 직렬화 가능한 경우 직렬화 될 수 있습니다. 프록시는 그렇지 않을 수도 있습니다.

+0

POCO 엔티티 생성에 ADO.NET POCO Entity Generator를 사용하는 경우 어떻게 POCO를 직렬화 할 수 있습니까? 그리고 컨텍스트의 ProxyCreationEnabled 속성을 false로 설정하면 프록시 생성이 이미 비활성화되어 있으므로 해당 프록시를 사용하지 않을 것입니다. – jean27

+1

항상 실제 POCO를 직렬화 할 수 있습니다. POCO가 아닌 프록시를 사용하는 경우 실제 POCO에 투영해야합니다. 필자는 일반적으로 직렬화하기 전에 익명 형식으로 프로젝트를 만듭니다. 순환 참조가 없기 때문에 일반적으로 어쨌든 직렬화가 중지됩니다. –

+0

안녕하세요 크레이그! 나중에 익명 형식을 어떻게 desirialize합니까? 순환 참조에 문제가 있습니다. 그런 다음 익명 형식 접근법에 대해 생각했지만 어떻게 deserialize하는지 모르겠습니다 ... 예제를 제공해 주시겠습니까? 고마워요! –

1

우리는 ProxyCreation (명백한 해결책)을 사용 중지 할 여력이 없습니다. 대신 우리는 그것을 해결하기 위해 Value Injecter을 사용했습니다. 다음과 같이 간단합니다.

var dynamicProxyMember = _repository.FindOne<Member>(m=>m.Id = 1); 
var member = new Member().InjectFrom(dynamicProxyMember) as Member; 

Enjoy!

관련 문제