Member 12824529 Ответов: 2

Как получить вызов хранимой процедуры в MVC для возврата данных?


Я с SQL Server, Экспресс-выпуск 2016, среда SSMS 2017, и MVC6 в Visual Studio сообщества 2017 на Windows 10.

Мне не удалось заставить ReportViewer работать после двух недель попыток, поэтому я создал хранимую процедуру, которая успешно заполняет временную таблицу точно так, как она должна отображаться в отчете.

Затем в качестве теста я создал представление индекса MVC, которое идеально отображает временную таблицу в виде отчета. Но, конечно, эти данные статичны.

Что мне действительно нужно, так это управлять представлением индекса из инструкции SELECT из временной таблицы в конце хранимой процедуры. У меня есть следующий код в моей процедуре NeededDocsReportController Index ActionResult. Он отображает заголовки столбцов просто отлично, но никаких данных.

Строка, отмеченная над вызовом хранимой процедуры, является тестовой строкой, которая отображает 17 строк данных из временной таблицы. Даже если я удаляю записи из этой таблицы, хранимая процедура успешно повторно заполняет временную таблицу. Разница заключается в том, что в приведенном ниже вызове хранимой процедуры в контроллере MVC она не возвращает никаких записей, в то время как та же самая хранимая процедура в окне SQL - запроса в SSMS 2017 корректно возвращает 17 записей.

Есть ли что-то очевидное, что я делаю неправильно или что я должен сделать, чтобы получить записи, которые выходят в MVC? Спасибо.

Что я уже пробовал:

пространство имен MVCwithDIYReport.Controllers
{
открытый класс NeededDocsReportController : Controller
{
private ReportDBContext db = новый ReportDBContext();

// GET: NeededDocsReport
индекс общественного ActionResult ()
{
//return View(db.NeededDocsReports.Список());
return View(db.sp_docsstatus(true).OfType<neededdocsreport>().ToList());
}

2 Ответов

Рейтинг:
6

Member 12824529

Я получил вызов хранимой процедуры, работающий с помощью ExecuteSqlCommand, как в приведенном ниже коде контроллера. Я запустил хранимую процедуру для извлечения, сортировки и загрузки данных во временную таблицу, в которой столбцы групп отображаются только один раз (потому что это отчет). Затем я показываю временную таблицу обычным способом с видом списка. Это отличный обходной путь для нас, простых смертных, для которых обучающие видео и пошаговые руководства по ReportViewer не работают.


// GET: NeededDocsReports
индекс общественного ActionResult ()
{
//Обновить данные отчета
БД.база данных.ExecuteSqlCommand("dbo.sp_docsstatus", false);
//Отображение отчета
смотреть возвращение(дБ.NeededDocsReport.Список());
}


Рейтинг:
12

Atlapure Ambrish

Я бы запустил SQL profiler и проверил, какой запрос/вызов запускается при вызове

db.sp_docsstatus(true).OfType<neededdocsreport>().ToList()


Я бы запустил тот же запрос на БД вручную и увидел, что все еще получаю ожидаемые данные/поведение.