gpt4 book ai didi

c# - MVC Linq 查询返回继承的实体 ID,但实体为空。我如何.Include() TPH 成员?

转载 作者:行者123 更新时间:2023-11-30 21:46:03 24 4
gpt4 key购买 nike

我有一个使用 Razor Views 的 MVC C# 应用程序。我刚刚实现了每层次结构表 (TPH),但遇到了无法 .Include() 继承的实体的问题。

项目详情 View :

@Html.DisplayFor(model => model.FundingOpportunity.FundingProgram.FundingAgency.Name)

当我尝试显示 FundingAgency 的内容时,它始终为空。我也可以将 Controller 修改为 .include FundingAgency,但它仍然为空。

修改后的项目 Controller :

    // 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);
}

在这里,我将项目 Controller 修改为 .Include FundingAgency。您可以看到 FundingAgencyID 如何具有值并且该值存在于数据库中,但不存在指向 FundingAgency 实体的链接。 这仅发生在每层次结构表 (TPH) 项目中。

Showing the null value

最佳答案

您可以尝试如下所示。

Program program = db.Programs.Where(X => X.ID == id)
.Include(p => p.Agency)
.First();

关于c# - MVC Linq 查询返回继承的实体 ID,但实体为空。我如何.Include() TPH 成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534577/

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