C# 数据记录中的列表为空

C# 数据记录中的列表为空,c#,asp.net-core-2.0,C#,Asp.net Core 2.0,我有一个类,它包含一个对象转换详细信息的列表 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; se

我有一个类,它包含一个对象转换详细信息的列表

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; }
}
公共类转换
{
[关键]
公共字符串Guid{get;set;}
公共字符串Naam{get;set;}
公共字符串状态{get;set;}
公共日期时间开始{get;set;}
公共日期时间?Einde{get;set;}
公共列表详细信息{get;set;}
}
使用下面的方法,我需要返回一个ConversieRun列表,包括conversidetails

public List<PGData.ConversieRun> GetAll()
{
      //var result = _context.CoversieDetails.ToList();
      return _context.ConversieRun.ToList();
 }
public List GetAll()
{
//var result=_context.CoversieDetails.ToList();
return_context.ConversieRun.ToList();
}
但是,当我返回上面的示例时,conversidetail列表为null。 现在,当我取消对结果列表的注释时,ConversiteDetails列表将按预期填充到ConversiteRun对象中

如果我没有在另一个列表中首先获取ConversitedDetails,那么为什么ConversitedDetails列表为空


提前感谢。

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

_context.ConversieRun.Include(x => x.Details).ToList();
现在将加载所有
ConversieRun
实体,包括它们的详细信息

您可以在文档()的“加载相关数据”部分了解更多信息


这里的示例是使用显式加载方法,您还可以选择使用延迟加载方法,在该方法中,当您请求相关实体时会加载它们。但是,这可能会对数据库查询的数量产生负面影响,因为它会对每个
conversiterun
实体运行单独的查询,以获取其详细信息。

请在此处阅读有关延迟加载的内容: