【发布时间】:2017-05-01 08:36:03
【问题描述】:
我有 2 个模型:(1) FamiliaMáquina (PK: FamiliaId) 和 (2) TipoMáquina (PK: TipoMáquinaId)。 它们之间的关系是:TipoMáquina 只能关联 1 个 FamiliaId,而 FamiliaMáquina 可以关联多个 TipoMáquinaId(一对多关系)。
FamiliaMáquina 定义:
public class FamiliaMáquina
{
[Key, Required]
public int FamiliaId { get; set; }
public string DescripciónFamilia { get; set; }
public virtual ICollection<TipoMáquina> TipoMáquina { get; set; }
}
TipoMáquina 定义:
public class TipoMáquina
{
[Key, Required]
public int TipoMáquinaId { get; set; }
public string DescripciónTipoMáq { get; set; }
public int FamiliaId { get; set; }
public virtual FamiliaMáquina FamiliaMáquina { get; set; }
}
目标:显示、编程 FamiliaMáquina 控制器、关联的 FamiliaId(来自模型 1)和 DescripciónTipoMáq(来自模型 2)的列表。为此,表格中已填充了示例数据。
在 FamiliaMaqController(关联发生的地方 - 预加载)上:
public class FamiliaMaqController : Controller
{
private ApplicationDbContext _context;
public FamiliaMaqController()
{
_context = new ApplicationDbContext();
}
protected override void Dispose(bool disposing)
{_context.Dispose();}
public async Task<ActionResult> NuevaMQ()
{
var fammáquinas = _context.FamiliaMáquinas.Include(c => c.TipoMáquina).AsNoTracking();
return View(await fammáquinas.ToListAsync());
}
}
这应该显示在 NuevaMQ.cshtml 上。 NuevaMQ 代码为:
@model IEnumerable<Plataforma.Models.FamiliaMáquina>
@{
ViewBag.Title = "NuevaMQ";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>NuevaMQ</h2>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Familia de Máquina</th>
<th>Tipo de Máquina</th>
</tr>
</thead>
<tbody>
@foreach (var fammáquinas in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => fammáquinas.FamiliaId)</td>
<td>@Html.DisplayFor(modelItem => fammáquinas.TipoMáquina.DescripciónTipoMáq)</td>
</tr>
}
</tbody>
</table>
我在这一行遇到错误:
@Html.DisplayFor(modelItem => fammáquinas.TipoMáquina.DescripciónTipoMáq
据推测,应该列出 FamiliaID 和 DescripciónTipoMáq,但是,我收到以下警告:
“ICollection 没有 'DescriptionTipoMáq' 的定义。”
¿为什么急切加载不起作用?我已经为此苦苦挣扎了一段时间。就像这行代码:
var fammáquinas = _context.FamiliaMáquinas.Include(c => c.TipoMáquina).AsNoTracking();
没有关联表格,但我没有收到错误。 我在网站上得到的结果是:
FamiliaId:1 描述TipoMáq:System.Data.Entity.DynamicProxies.FamiliaMáquina_EB64915DB33A48C74F57D392EFE55D5AEDC5BF74BE67B819F4737EEB09B6F436
这重复的次数与每个 FamiliaId 相关的项目一样多。就好像程序正在迭代,但每次都获取该引用而不是字段值。
【问题讨论】: