2010-08-02 4 views
1

Могу ли я сериализовать классы POCO? Я использую генератор сущности C# POCO.Сериализация объектов POCO

Я попытался отредактировать файл .tt, который генерирует классы сущностей, чтобы добавить атрибут Serializable. Это правильно?

ответ

2

Вы используете прокси POCO, а не чистые POCOs. Чистые POCOs могут быть сериализованы, если (очевидно) они сериализуемы. Прокси не может быть.

+0

Как я могу сериализовать POCOs, если я использую ADO.NET POCO Entity Generator для генерации объектов POCO? И когда я установил для свойства ProxyCreationEnabled контекста значение false, создание прокси-сервера уже отключено, поэтому я уверен, что не использую эти прокси. – jean27

+1

Вы всегда можете сериализовать реальные POCOs. Если вы используете прокси-серверы, которые не являются POCOs, тогда вы должны проектироваться на реальные POCOs. Я обычно проектирую анонимные типы перед сериализацией, так как это не гарантирует круговых ссылок, которые в любом случае убивают сериализацию. –

+0

Привет Крейг! Как вы впоследствии деириализуете анонимные типы? У меня также проблемы с круговыми ссылками, а затем подумал об использовании анонимных типов, но я не уверен, как их десериализировать ... не могли бы вы привести пример? Большое спасибо! –

1

Мы не могли позволить себе отключить ProxyCreation (очевидное решение). Вместо этого мы использовали Value Injecter для его решения. Это так же просто, как:

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

Наслаждайтесь!

Смежные вопросы