Я выполняю хранимую процедуру из моего основного приложения asp. net. Процедура выполняет оператор выбора из представления БД. Внутренний вид базы данных объединяет 3 таблицы. Когда я выполняю следующий код, результирующий набор приходит как int, выдавая исключение, поскольку представление бритвы ожидает List, мне нужно получить его как список, чтобы передать его представлению бритвы и отобразить таблицу. Буду признателен за любую помощь.
ViewModel:
public class ViewModel
{
public int TimeKey { get; set; }
public int FiscsalYear { get; set; }
public string LocationNum { get; set; }
public string Location { get; set; }
}
Просмотр:
@model List<FactWorkOrdersViewModel>
@{
ViewBag.Title = "Stored Procedure Test";
}
<div class="container">
<table class="table table-hover">
<thead>
<tr>
<th colspan="5"><h3>Stored Procedures results</h3></th>
</tr>
<tr>
<th>TimeKey</th>
<th>Fiscal Year</th>
<th>Location Number</th>
<th>Location</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@item.TimeKey
</td>
<td>
@item.WorkOrderAltKey
</td>
<td>
@item.FiscsalYear
</td>
<td>
@item.LocationNum
</td>
<td>
@item.Location
</td>
</tr>
}
</tbody>
</table>
<div>
Контроллер:
public IActionResult SPTest(ReportViewModel model)
{
DbConnection connection = db.Database.GetDbConnection();
using (DbCommand cmd = connection.CreateCommand())
{
cmd.CommandText = "ExecuteReport";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@ReportId", model.ID));
if (connection.State.Equals(ConnectionState.Closed))
{
connection.Open();
}
var result = cmd.ExecuteScalar();
//var result = cmd.ExecuteNonQuery();
if (connection.State.Equals(ConnectionState.Open))
{
connection.Close();
}
return View(result);
}