gpt4 book ai didi

c# - Entity Framework ,从多个表中获取数据并选择要显示的列

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:51 24 4
gpt4 key购买 nike

从多个表中获取数据时,我很困惑。我在我的项目中使用 MVVM 和数据库优先方法。

表格

My Tables

我有三个具有多对多关系的表:Room、ApartmentRoom 和 Apartment。

房间 Controller

public class ApartmentController : Controller
{
private readonly IApartmentRepository _apartmentRepository;

public ApartmentController(IApartmentRepository apartmentRepository)
{
_apartmentRepository = apartmentRepository;
}

//...codes

[HttpGet]
public ActionResult List()
{
var apartmentList = _apartmentRepository.GetAll().ToList();
return View(apartmentList);
}

//...codes
}

List.cshtml

<div class="dataTables_wrapper">
<table class="table table-bordered table-striped" id="dataTable">
<thead>
<tr>
<th>Id</th>
<th>Door Number</th>
<th>Floor Number</th>
<th>Capacity</th>
<th>Fullness</th>
<th>Apartment Name</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.ToList())
{
<tr>
<td>@item.Id</td>
<td>@item.DoorNumber</td>
<td>@item.FloorNumber</td>
<td>@item.Capacity</td>
<td>@item.Fullness</td>
<td>@item.ApartmentRoom.Where(x => x.RoomID == item.Id).Select(x => x.Apartment.ApartmentName)</td>
<td>
@Html.ActionLink("Düzenle", "Edit", new { id = item.Id })
@Html.ActionLink("Sil", "Delete", new { id = item.Id })
</td>
</tr>
}
</tbody>
</table>

我尝试使用基于方法的语法获取我想在表中显示的字段,但我无法显示房间所属的公寓名称。

结果

Result Image

在 View 中,我想列出Room 表的所有字段和Apartment 表的ApartmentName 字段。

最佳答案

 <td>@item.ApartmentRoom.Where(x => x.RoomID == item.Id).Select(x => x.Apartment.ApartmentName)</td>

^^这只是在 IEnumerable 上调用 ToString ,这就是您在 View 中得到奇怪输出的原因。你想使用 Include DbSet<Apartment> 上的方法加载任何相关实体,然后使用 First获取有问题的相关实体。 Include 采用 lambda 表达式 ( context.Apartments.Include(a => a.Rooms) ) 的重载存在于 System.Data.Entity 中命名空间。

更像是:

<td>@item.ApartmentRoom.First(x => x.RoomID == item.Id).ApartmentName</td>

关于c# - Entity Framework ,从多个表中获取数据并选择要显示的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46402475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com