【发布时间】:2020-03-25 18:46:33
【问题描述】:
我的 2 个实体具有简单的一对多,即父子关系。
public class Itinerary {
public Itinerary() {
CodeHours=new List<CodeHours>();
}
public int Id { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public DateTime DateWorked { get; set; }
public String EnteredBy { get; set; }
public List<CodeHours> CodeHours { get; set; }
}
public class CodeHours {
public int Id { get; set; }
public String Code { get; set; }
public float Hours { get; set; }
public Itinerary Itinerary { get; set; }
public int ItineraryId { get; set; }
}
public class DBContext : DbContext {
public DbSet<Itinerary> Itineraries { get; set; }
}
我正在像这样从其 DbSet 中检索 Itinerary
Itinerary itn = ctx.Itineraries.Where(i => i.FirstName == Model.FirstName
&& i.LastName == Model.LastName
&& i.DateWorked == row.Date
).Include(i => i.CodeHours)
.FirstOrDefault();
我得到了正确的Itinerary,但它的CodeHours 始终为空。 SQL Server Profiler 表明 CodeHours 表从未包含在查询中,奇怪的是我看到 2 个单独的 select 语句被发送到 SQL Server,即使我的代码中只有 1 个针对 DbSet 的查询。
将CodeHours DbSet 添加到我的DbContext 没有任何区别。
该应用程序是 ASP.NET MVC 5。EF Core 3 课程中的类似示例有效,但它是控制台应用程序,而不是 ASP.NET MVC
提前谢谢你。
【问题讨论】:
-
你初始化
Itinerary.CodeHours,没关系,但是你是不是也初始化了CodeHours .Itinerary?
标签: c# asp.net-mvc-5 entity-framework-core-3.1