数据记录内的列表为空

时间:2018-09-09 09:28:04

标签: c# asp.net-core-2.0

我有一个此类,其中包含对象ConversieDetail的列表

public class ConversieRun
{
    [Key]
    public String Guid { get; set; }
    public String Naam { get; set; }
    public String Status { get; set; }
    public DateTime Start { get; set; }
    public DateTime? Einde { get; set; }
    public List<ConversieDetails> Details { get; set; }
}

使用以下方法,我需要返回一个包含ConversieDetails的ConversieRun列表

public List<PGData.ConversieRun> GetAll()
{
      //var result = _context.CoversieDetails.ToList();
      return _context.ConversieRun.ToList();
 }

但是,当我返回上面的示例时,conversieDetail列表为null。 现在,当我取消注释结果列表时,conversieDetails列表将按预期方式填充在ConversieRun对象中。

如果我没有在另一个列表中首先获得ConversieDetails的列表的原因为何?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,实体中的关系不会加载,并且为null。您可以通过使用Include来明确地告诉EF也加载相关实体:

_context.ConversieRun.Include(x => x.Details).ToList();

现在将加载所有ConversieRun实体及其详细信息。

您可以在文档(https://docs.microsoft.com/en-us/ef/core/querying/related-data)的“加载相关数据”部分中详细了解此内容

此处的示例使用的是Explicit加载方法,您也可以选择使用Lazy加载方法,在其中请求相关实体时将其加载。但是,这会对数据库查询的数量产生负面影响,因为它将为每个ConversieRun实体运行一个单独的查询以获取其详细信息。