如何在单个视图中显示来自八个LINQ to SQL表的数据
本文关键字:LINQ 八个 to SQL 数据 单个 视图 显示 | 更新日期: 2023-09-27 18:03:06
我对MVC很陌生,我正试图从8个不同的表中提取数据(每个表中的1条记录,但每个表中的每个记录中的几个字段)
我阅读了如何使用2个表和连接来做到这一点,但是当我尝试连接两个以上的表时,我会得到错误。
每个表在每个记录中都有一个ID字段,这就是我需要查询的。
更新:这是我的ViewModel:public class StoreInfoViewModel
{
public List<AWS_Ticket> tickets { get; set; }
public List<AWS_TNF_StepOne> tnf { get; set; }
public List<AWS_TNF_StepTwo> tnf2 { get; set; }
public List<AWS_DBU> dbu { get; set; }
public List<GetStoreInfoResult> storeInfo { get; set; }
}
这是我的控制器:
public class StoreInfoController : Controller
{
PortalDataContext db = new PortalDataContext();
//
// GET: /StoreInfo/
public ActionResult Index(int id)
{
var tickets = db.AWS_Tickets.Where(x => x.Store_Number == id);
var tnf = db.AWS_TNF_StepOnes.Where(x => x.Store_Number == id);
var tnf2 = db.AWS_TNF_StepTwos.Where(x => x.Store_Number == id);
var dbu = db.AWS_DBUs.Where(x => x.StoreNumber == id);
var storeInfo = db.GetStoreInfo(id);
StoreInfoViewModel model = new StoreInfoViewModel();
model.tickets = tickets.ToList();
model.tnf = tnf.ToList();
model.tnf2 = tnf2.ToList();
model.dbu = dbu.ToList();
model.storeInfo = storeInfo.ToList();
return View(model);
}
这是我的视图:
@model IEnumerable<Team_Portal_v3.Models.StoreInfoViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<div>
<table>
@foreach (var item in Model)
{
<tr>
<td>
Store Number: @Html.DisplayFor(modelItem => item.storeInfo[0].StoreNum)
</td>
<td> </td>
<td>24 Hour Store? @Html.DisplayFor(modelItem => item.storeInfo[0].Is24Hour)</td>
</tr>
<tr>
<td>
City / State: @Html.DisplayFor(modelItem => item.storeInfo[0].City) , @Html.DisplayFor(modelItem => item.storeInfo[0].State)
</td>
<td>
Store Phone: @Html.DisplayFor(modelItem => item.storeInfo[0].StorePhone)
</td>
<td>
DBU Installed? @Html.DisplayFor(modelItem => item.storeInfo[0].DBUInstalled)
</td>
</tr>
<tr>
<td>
Owner: @Html.DisplayFor(modelItem => item.storeInfo[0].Owner)
</td>
<td>
Owner Phone: @Html.DisplayFor(modelItem => item.storeInfo[0].OwnerPhone)
</td>
<td>
Store Status: @Html.DisplayFor(modelItem => item.storeInfo[0].StoreStatus)
</td>
</tr>
<tr>
<td>
Division: @Html.DisplayFor(modelItem => item.storeInfo[0].Division)
</td>
<td>
Region: @Html.DisplayFor(modelItem => item.storeInfo[0].Region)
</td>
<td>
Expected Opening Date: @Html.DisplayFor(modelItem => item.storeInfo[0].OpeningDate)
</td>
</tr>
}
</table>
</div>
我没有收到任何错误的初始化运行的应用程序,它当我试图去索引和数字ID,我得到以下错误:
传入字典的模型项类型为"Team_Portal_v3.Models。StoreInfoViewModel',但是这个字典类型的模型项System.Collections.Generic.IEnumerable 1 [Team_Portal_v3.Models.StoreInfoViewModel] '。
我哪里做错了?
这里的错误消息是不言自明的。你传入了一个StoreInfoViewModel
,但是你的视图预期是一个IEnumberable<StoreInfoViewModel>
。
或者你的视图需要更新为只期望一个StoreInfoViewModel
@model Team_Portal_v3.Models.StoreInfoViewModel
或者你需要从Controller/Action
StoreInfoViewModel
列表我不想不受欢迎,但是当您跨3个连接时最好使用存储过程。这里有一篇关于如何做到这一点的文章。