【发布时间】:2020-06-28 16:38:31
【问题描述】:
我正在从我的 asp.net 核心应用程序执行一个存储过程。该过程从 db 视图执行 select 语句。 db 视图内部连接 3 个表。当我执行以下代码时,结果集作为 int 抛出异常,因为剃刀视图需要 List,我需要将其作为列表接收,以便将其传递给剃刀视图并显示表格。我将不胜感激。
视图模型:
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);
}
【问题讨论】:
标签: sql-server .net-core entity-framework-core