На самом деле это не вопрос, это проблема, по которой я не смог найти никакой помощи, поэтому я подумал, что опубликую решение, которое я в конечном итоге найду, на случай, если кто-то еще столкнется с ним.
проблема была в столбце с типом 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.Надеюсь, это кому-нибудь поможет!