WCF, Silverlight 5, Самостоятельно отслеживаемые объекты и (де) сериализация - PullRequest
1 голос
/ 16 августа 2011

Я работаю над приложением Silverlight.Он использует службы WCF для передачи объектов EF 4 Self Tracking туда и обратно от клиента к серверу.
Методы чтения работают нормально, чтобы обслуживать коллекции отслеживаемых объектов клиенту Silverlight из служб WCF.Даже базовые обновления работают правильно.Я могу изменить свойство «OfficeEntity» и передать его в качестве параметра методу обновления WCF.Проблема, с которой мы сталкиваемся, заключается в том, что при обновлении одной из коллекций сущности мы получаем ошибку десериализации, приведенную ниже.Например, если «OfficeEntity» имеет свойство навигации «Locations», которое является коллекцией «LocationEntity», и мы добавляем новое «Location» в свойство «Locations» и сохраняем его, мы получаем исключение десериализации.

officeEntity.Locations.Add (new Location () {LocationName = "Test 1"});

client.SaveAsync (officeEntity);

Сведения об исключении:

Средство форматирования выдало исключение при попытке десериализации сообщения: произошла ошибка при попытке десериализации параметра: OfficeEntity.Сообщение InnerException> было «Произошла ошибка при десериализации объекта типа Entities.OfficeEntity.Конечный элемент 'ObjectsAddedToCollectionProperties' из пространства имен> 'http://schemas.datacontract.org/2004/07/Entities' ожидается.Найден элемент 'b: AddedObjectsForProperty' из пространства имен> 'http://schemas.datacontract.org/2004/07/Entities'.'

Похоже, проблема в десериализации свойств отслеживания изменений.Любые идеи о том, что вызывает это или где я могу это исправить?

Спасибо, Джейсон

1 Ответ

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

У сущностей самообследования есть проблемы с отслеживанием, если фактические сгенерированные сущности не используются в клиенте - я написал об этом в блоге здесь .

Не уверен, что это является причиной ваших проблем с сериализацией, но определенно повлияет на возможность использования сущностей с самообследованием

...