Рамка объекта Вызов A для XML сохраненной процедуры укорений при 2033 символах
-
14-09-2020 - |
Вопрос
У меня есть сохраненная процедура, которая использует A для XML-оператора в конце этого и возвращает мне немного XML.
Я использую .NET 4 и структуру объекта и, когда я делаю функцию импорта этой сохраненной процедуры и попытается вызвать ее через структуру объекта, она усекает возврат при 2033 символах.
Я поменял в себя основу для традиционного подхода ADO.NET, чтобы вызвать хранимую процедуру, которая имела ту же проблему - усечена на 2033 символах - то есть когда я наткнулся на следующую статью MSDN, объясняющую это, это побочный дизайн и использовать Метод «ExecutexMLeader» для его преодоления:
http://support.microsoft.com/kb/310378
Так что это работает сейчас как временное исправление, но я хотел бы использовать импорт функции структуры сущностей, поэтому у меня нет кода ADO.NET, перепутанный с кодом EF.
Есть ли какой-то способ, которым я могу использовать функцию импорта в EF, вернуть XML и преодолеть ограничение символов 2033?
С уважением
BGS264
Решение
Я столкнулся с такой же проблемой сегодня.
Вызов функции EF возвращает XML в 2033-длинных строковых «кусках» (например, если ваш XML был 5000 символов, вы получите 3 результата: 2 из 2033 символов и 1 из 934 символа)
Вы можете легко добавить эти кусочки, чтобы вернуть полный список XML.
Другие советы
Я усваивал ответ Фермина.Ответ на Dementic (и кто-либо еще), вот фрагмент кода.
Из этого:
using (var db = new MyEntities())
{
IEnumerable<string> results = db.GetSomeXML(ProductCode);
return results.FirstOrDefault();
}
.
к этому:
using System.Text; //For the StringBuilder
using (var db = new MyEntities())
{
StringBuilder retval = new StringBuilder();
IEnumerable<string> results = db.GetSomeXML(ProductCode);
foreach (var result in results)
retval.Append(result);
return retval.ToString();
}
.