我有一个使用Razor Views的MVC C#应用程序。我刚刚实现了逐层表格(TPH),并且遇到了一个问题,即我无法.Include()继承的实体。
项目详细信息视图:
@Html.DisplayFor(model => model.FundingOpportunity.FundingProgram.FundingAgency.Name)
当我尝试显示FundingAgency的内容时,它始终为null。我还可以将控制器修改为.include FundingAgency,但它仍然为null。
修改后的项目负责人:
// GET: /Project/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var projectList = db
.Projects
.Include(p => p.FundingOpportunity)
.Include(p => p.FundingOpportunity.FundingProgram)
.Include(p => p.FundingOpportunity.FundingProgram.FundingAgency);
Project project = projectList.Where(p => p.ID == id).First();
if (project == null)
{
return HttpNotFound();
}
return View(project);
}
在这里,我已将项目控制器修改为。包括FundingAgency。您可以看到FundingAgencyID如何具有一个值,并且该值存在于数据库中,但是不存在指向FundingAgency实体的链接。这仅在逐层表(TPH)项中发生。
最佳答案
您可以尝试如下所示。
Program program = db.Programs.Where(X => X.ID == id)
.Include(p => p.Agency)
.First();