Столбец типа ADO.NET XML в параметре табличного значения - PullRequest
2 голосов
/ 12 октября 2010

На самом деле это не вопрос, это проблема, по которой я не смог найти никакой помощи, поэтому я подумал, что опубликую решение, которое я в конечном итоге найду, на случай, если кто-то еще столкнется с ним.

проблема была в столбце с типом XML в параметре TVP, который я передавал хранимому процессу SQL Server 2008.Когда я вызвал ExecuteNonQuery (), я получил ошибку, которая была похожа на

Дополнительная информация: синтаксический анализ XML: (номер строки бла-бла) не удалось переключить кодировку (бла-бла)

Это потому, что XML, как обычно, был обозначен как UTF-8

но строки в .NET - это UTF-16.Решением было объявить столбец с XML как байтовый массив в DataTable:

hitImport.Columns.Add("Answer", typeof(byte[]));

, а затем получить байты UTF-8 при добавлении строки:

row["Answer"] = Encoding.UTF8.GetBytes(assignment.Answer);

ADO.NET Engine знает, как преобразовать байты в XML.Надеюсь, это кому-нибудь поможет!

...