Entity Framework 4 + POCO с пользовательскими классами и контрактами WCF (проблема сериализации) - PullRequest
1 голос
/ 08 ноября 2010

Вчера я работал над проектом, где я обновился до Entity Framework 4 с шаблоном Repository. В одном посте я прочитал, что необходимо отключить пользовательские классы генератора инструментов, а затем написать классы (такие же, как entites) вручную. Чтобы я мог это сделать, я использовал POCO Entity Generator , а затем удалил новые сгенерированные файлы .tt и все подчиненные классы .cs. Затем я сам написал «классы сущностей».

Я добавил шаблон репозитория и реализовал его на бизнес-уровне, а затем реализовал слой WCF, который должен вызывать методы из бизнес-уровня. Вызывая метод Insert (Add) из слоя представления, и все в порядке. Но если я вызываю какой-либо метод, который должен вернуть какой-то класс, то я получаю сообщение об ошибке типа (соединение было прервано сервером).

Полагаю, есть проблема с сериализацией или я не прав? Как можно решить эту проблему?

Я использую Visual Studio S2010, Entity Framework 4, C #.

UPDATE:

Я загрузил проект и надеюсь, что кто-нибудь может мне помочь! текст ссылки

ОБНОВЛЕНИЕ 2:

Мои вопросы:

  1. Почему POCO хорошо (плюсы / минусы)?
  2. Когда следует использовать POCO?
  3. Является ли POCO + шаблон хранилища хорошим выбором?
  4. Должны ли классы POCO написаны мной самостоятельно или я могу использовать автоматически сгенерированные классы POCO?

Ответы [ 3 ]

1 голос
/ 27 ноября 2010

Почему POCO хорошо (плюсы / минусы)?

  • Работа с EF4, NH и несколькими другими -ORM

Когда следует использовать POCO?

Является ли POCO + шаблон хранилища хорошим выбором?

  • ДляWCF

    POCO - У вас есть отслеживание изменений вручную,

    STE Автоматическое отслеживание изменений выполнено.

Должны ли классы POCO написаны мной или я могуиспользовать автоматически сгенерированные классы POCO?

  • T4 будет лучшим выбором.
0 голосов
/ 04 января 2011

Для сериализации POCO вам понадобится ProxyDataContractResolver.

Вы можете ознакомиться с этой статьей MSDN Walkthrough , посвященной созданию настраиваемого атрибута, который можно применять к контракту на обслуживание для сериализации типов прокси POCO.

0 голосов
/ 27 ноября 2010

Что касается ваших проблем с сериализацией WCF, в шаблоне t4 нам нужно было установить ProxyCreationEnabled = false; на ContextOptions

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontextoptions.proxycreationenabled.aspx

...