Entity Framework T4 POCO объекты, вызывающие исключение в WCF - PullRequest
1 голос
/ 16 августа 2011

Эти объекты имеют коллекции типа ICollection <>

Если я передаю граф объектов от клиента к серверу, он выдает следующее исключение:

System.NotSupportedException was unhandled by user code
  Message=Collection was of a fixed size.
  Source=mscorlib

Что происходит в коде исправления, сгенерированном шаблоном T4. Кажется, коллекции десериализируются на сервере как массивы и поэтому не могут быть изменены. Есть ли способ указать тип, который должен использовать сериализатор?

Ответы [ 2 ]

5 голосов
/ 16 августа 2011

Я настоятельно рекомендую вам не использовать классы POCO на границе обслуживания.Создайте отдельный набор классов для моделирования данных, которые вы хотите отправлять и получать по проводам (Объекты передачи данных - DTO), и используйте инструмент типа automapper для перемещения данных между DTO и вашими классами POCO * 1003.*

По сути, вы в конечном итоге привязываете потребителей вашего сервиса к внутренней концептуальной модели вашего сервиса, что означает, что вы ограничены в изменении своей реализации, потому что вам нужно избегать взлома ваших клиентов

2 голосов
/ 16 августа 2011

Попробуйте использовать следующий атрибут

[ServiceKnownType(typeof(List<string>))]

Если это не сработает, возможно, попробуйте использовать IList<T>, если это возможно в вашей ситуации

...