Je suis très confus lorsque j'obtiens des données de plusieurs tables. J'utilise les premières approches MVVM et Database sur mon projet.Entity Framework, obtention de données à partir de plusieurs tables et sélection des colonnes à afficher
Tables
J'ai trois tables avec de nombreux à-plusieurs: Chambre, ApartmentRoom et Appartement.
RoomController
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>
J'ai essayé d'obtenir les champs que je veux montrer dans le tableau avec une syntaxe à base de la méthode, mais je ne pouvais pas montrer les noms des appartements auxquels appartiennent les chambres.
Résultat
De l'avis, je veux la liste des tous les champs de la table Room
et ApartmentName
champ de la table Apartment
.
Vous devez probablement désactiver le chargement différé dans la configuration dbcontext ou utiliser la méthode 'Include' pour obtenir des enregistrements de table enfant. –