Как передать 60 тысяч + записей набора данных в виде XML в хранимую процедуру с помощью stringwriter и writetoxml ?
Я создал строку, которая представляет собой строку формата xml, сгенерированную с помощью StringWriter и WriteToXml с использованием dataset .. теперь она работает для меньшего количества записей в dataset, но когда записи превышают 60k +, что будет сценарием реального времени, она выбрасывает память из исключения при хранении XML-сгенерированного strj g в строковой переменной. Пожалуйста, проводите .
Код:
StringWriter sw = new StringWriter(); dataSet.WriteXml(sw); string result = sw.ToString();
Что я уже пробовал:
Я сохранил его в строковой переменной, как упоминалось выше, но он вызывает исключение памяти. Пожалуйста, предоставьте код, если это возможно. Я загружаю файл Excel преобразуя его в набор данных а затем преобразуя его в формат строки xml чтобы передать его в хранимую процедуру
Maciej Los
Звучит как плохой дизайн... Поделитесь своим кодом. Мы не можем помочь вам, не видя этого.
Abrar Kazi
StringWriter sw = новый StringWriter();
набор данных.Метода writexml(ео);
результат строка = ув.Метод toString();
Вот код, который я использую
Dave Kreskowiak
Я подозреваю, что ваше поколение XML-это создание XML-строку, которая является чрезвычайно большой. Вы не можете сгенерировать это в памяти. Вам придется записать этот XML-файл непосредственно в файл, а затем вернуть его вызывающему объекту.
Но поскольку мы ничего не знаем ни о вашем коде, ни о структуре и репрезентативных примерах данных для одного из типичных объектов, которые вы отправляете в XML, невозможно сказать что-либо полезное для решения этой проблемы.
Abrar Kazi
StringWriter sw = новый StringWriter();
набор данных.Метода writexml(ео);
результат строка = ув.Метод toString();
Вот код, который я использую
Dave Kreskowiak
Ладно, ну и что? Без сведения, это довольно много, чтобы tourbleshoot это невозможно.
Предоставленный вами код является очень простым кодом для записи набора данных в XML-строку в памяти. Ошибка говорит вам о том, что вы генерируете такой огромный XML-файл, что он превышает пределы памяти строки. Ни один объект в .NET не может быть больше 2 ГБ.
Таким образом, вам действительно не нужно отправлять более 60 000 записей обратно в одной XML-строке. Вам нужно вернуться назад и переоценить проблему и то, как вы ее решаете. Вместо того чтобы возвращать один монолитный блок данных, отправляйте записи наборами по сотне. Вы решаете подобную проблему, "подкачивая" данные.
Dave Kreskowiak
И нет, это не срочно. Это может быть срочно для вас, но это не для кучки людей, которые добровольно предоставляют все свободное время, чтобы ответить на вопросы на этом сайте.