Сериализация / десериализация (довольно) простых объектов в CLR для веб-сервисов RESTful

1

У меня есть некоторые процедуры, основанные на CLR, в моей базе данных SQL Server, которым необходимо использовать веб-службу RESTful, списки POSTing и получение коллекций статусов.

Я думал, что могу использовать JavaScriptSerializer и использовать JSON, но у меня много проблем с получением SQL Server, чтобы позволить мне (JSON.NET и System.Script.Serialization не являются сборками, с JSON.NET мне разрешено играть, по-видимому, а деревья зависимостей кажутся уродливыми).

Итак, я подумал, что я могу использовать XmlSerializer, но, похоже, он ожидает много метаданных (стиль контракта), которые служба REST не предоставляет, и, похоже, это не позволяет вам преобразовать ваш результирующий XML в определенный тип (например, Dictionary<int, string> или decimal[]), как я ожидал бы с помощью JavaScriptSerializer или сериализатора JSON.NET.

Я потратил последний час на то, что кажется, что это должен быть простой ответ или простой метод, и я надеюсь, что у моего Google-фу просто есть ebola. Я не могу найти какую-либо официальную рекомендацию о том, как это сделать, и кажется сумасшедшим даже подумать о том, чтобы перевернуть мой собственный сериализатор/десериализатор, когда это должно появиться все время.

Как вы анализируете запросы службы RESTful и ответы от сборки CLR, не просматривая героизм кода?

  • 0
    Что ж, я знаю, что вы не можете привести в словарь из XML, потому что XML не может применять уникальные ключи. Я думаю, лучшее, что вы можете сделать, это IEnumerable <KeyValuePair>.
  • 0
    У меня точно такая же проблема, как и у вас, вы нашли решение для этого?
Теги:
rest
serialization
sqlclr
clr

1 ответ

1

Создайте POCO, которые соответствуют XML, который вы пытаетесь проанализировать (вы можете использовать аннотации, чтобы модель объекта соответствовала модели XML), а затем используйте XMLSerializer для анализа графа объектов этих POCOs.

Этот сайт поможет вам выполнить эту работу, так как обычно система генерирует динамические сборки для этого (и SQL это не понравится):

http://social.msdn.microsoft.com/Forums/sqlserver/en-US/3fa5dce3-b0f3-44f8-9b7b-65439f1c98ae/cannot-deploy-xmlserializers-clr-assemblies

Вы уверены, что это должно быть сделано/должно быть сделано вообще в базе данных?

  • 0
    Ну, нет, это должно быть сделано в сборке управляемого кода, но мне нужно использовать ресурсы API из базы данных. Можете ли вы рассказать о POCOS, чтобы сделать простые объекты, на которые я ссылался выше?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню