【发布时间】:2021-07-04 12:57:59
【问题描述】:
我有一个非常复杂的存储过程,它返回一个数据透视表。该数据是动态的。列名会改变,列数也会改变。基于为特定医师审核的图表审核数量。这就是 SQL Server 从存储过程中为特定医师返回数据的方式。
Question A B C D Average
--------------------------------------------------------
11_ChartWellOrg 5.0 6.0 6.0 6.0 5.8
12_HistInfoAdequate 5.0 6.0 5.0 5.0 5.3
14_PhysExamAdequate 6.0 6.0 6.0 6.0 6.0
16_AssessFormulation 6.0 6.0 5.0 6.0 5.8
18_PlanTreatAdequate 6.0 6.0 6.0 6.0 6.0
20_GlobalOverallAssess 6.0 6.0 6.0 6.0 6.0
过去,我只是把它放在一个 DataGrid 中,我可以用页面后面的代码来处理动态部分。
Public Sub BindGridView()
Dim tc As New TestCode
Dim dt As New DataTable
If intType <> 3 Then
dt = tc.GetDT(intParticipant, intActivity, intAuditor, dBatch)
Else
dt = tc.GetDT(intParticipant, intActivity, intAuditor, intMonth, intYrChartEntry, intDept)
End If
intRows = dt.Rows.Count
intColumns = dt.Columns.Count
gvPivot.DataSource = dt
gvPivot.DataBind()
gvPivot.HeaderRow.Visible = True
gvPivot.HeaderRow.BackColor = Drawing.Color.FromArgb(79, 113, 185)
GridFormat()
End Sub
现在的要求是我将其移至我们使用 ASP.NET Core 3.1 MVC 构建的 Web 门户。我想我可以将其加载到 DataTable 中并将其发送到此视图:
@using System.Data
@model DataTable
@{
}
<div>
<div>
<h4>Matrix</h4>
<table id="tblData" class="table">
<thead>
<tr>
@foreach(DataColumn col in Model.Columns)
{
<th>@col.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in Model.Rows)
{
<tr>
@foreach (DataColumn col in Model.Columns)
{
<td>@row[col.ColumnName]</td>
}
</tr>
}
</tbody>
</table>
</div>
</div>
我认为这将处理提供的 DataTable 的动态部分。
我不知道如何使用我的 DBContext 获取数据。我不认为这可以处理动态表或模型。我可以绕过 DBContext 并将这些数据拉到 DBContext 之外吗?这是不好的形式吗?我是 MVC 和实体框架的新手。到目前为止,我在门户网站上做得很好,这个只是在头和脖子上打败了我。建议?帮助?毒品?
如果我需要提供更多信息,请告诉我。我通常不会在论坛上发帖,因为答案似乎已经存在,我不必问这个问题。
【问题讨论】:
-
只是不要尝试使用 EF 执行此操作。使用 Dapper,这是获取动态数据的完美工具。
-
所以我对 MVC 和 EF 游戏非常陌生。 “使用 Dapper”真的对我没有帮助。我正在看 dapper,但我不确定它对我有什么帮助。我可以将它和 EF 与 Dapper 一起使用吗?整个门户是使用 EF Core 构建的。是否需要重写所有内容,或者我可以在项目的其余部分使用 EF 核心的同时使用 Dapper 提取这一数据集吗?
-
它仍然是一个从存储过程返回的数据表,对吧?如果是这样,您不必为此使用 EF 类映射。这是一个可能比你需要的更复杂的例子,但给你一个想法codeproject.com/Articles/5263745/…
-
好的,你们真是太棒了。我会承认的。这些看起来对我有帮助。我会全力以赴,看看我能得到什么。
标签: c# sql-server entity-framework-core asp.net-core-mvc visual-studio-2019