Сериализация и десериализация System.Data.DataSet в XML с помощью SQL Server UniqueIdentifier с использованием различныхC#

Место общения программистов C#
Ответить
Anonymous
 Сериализация и десериализация System.Data.DataSet в XML с помощью SQL Server UniqueIdentifier с использованием различных

Сообщение Anonymous »

У нас есть устаревшее приложение, которое изначально было написано для прямого подключения к базе данных SQL Server с использованием OLEDB.
С тех пор, как мы представили базы данных SQL Azure (но некоторые из наших клиентов все еще находятся локально), мы работаем над веб-приложением (но большинство наших клиентов все еще используют устаревшее приложение) и мы имеем дело с некоторыми клиентами, которые хотят использовать базу данных SQL Azure, но отказываются открыть порт для OLEDB для подключения к ним. Итак, мы написали REST API, который возвращает наборы данных, сериализованные в XML. (после различных приключений в JSON, которые привели к тупику).
Сериализация и десериализация наборов данных в XML оказалась очень простой и работает отлично почти всегда при включении информации о схеме. Пока мы не встретим один набор данных, который включает столбец, определенный как UNIQUEIDENTIFIER, то есть Guid.
Я думаю, что основная причина проблемы заключается в том, что REST API был написан для .NET Core, в то время как устаревшее приложение было написано для .NET Framework 4.8.
Хотя с «простыми» типами данных все в порядке, информация о схеме для Guid включается следующим образом: Десериализатору это не понравилось, поэтому я вернулся к соединению OLEDB, запустил ту же процедуру и сериализовал ее вручную через отладчик в приложении .NET Framework 4.8, и я вижу, что та же информация сериализуется вот здесь: К счастью, мы не используем много типов данных, которые не являются «простыми» типами, кроме типов UNIQUEIDENTIFIER, поэтому у меня возникнет соблазн просто позволить REST API делать то, что он делает, и когда я получу ответ, проверить наличие

Код: Выделить всё

msdata:DataType="System.Guid, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"
и замените его на

Код: Выделить всё

msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
Прежде чем я десериализую XML обратно в DataSet, и да, это прекрасно работает. НО... что, если в один прекрасный день разработчики нашего REST API решат перейти на .NET Core 9 или что-то еще? Я сильно подозреваю, что это, как минимум, ОЧЕНЬ изменит текст их ответа с

Код: Выделить всё

System.Private.CoreLib, Version=8.0.0.0
скажем,

Код: Выделить всё

System.Private.CoreLib, Version=9.0.0.0
Я бы предпочел поручить нашему разработчику REST API избегать чего-то подобного, обеспечив возврат информации о схеме System.Guid в

Код: Выделить всё

System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
формат ....
Мой вопрос: существует ли «одобренный» или «правильный» способ сделать это или нет лучшего способа, чем проверка разработчиком этого вывода, если он переключится на другую версию .NET Core и напишет свой собственный string.replace?

Подробнее здесь: https://stackoverflow.com/questions/798 ... rver-uniqu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»