链接多个包含thenInclude抛出System.InvalidOperationException

时间:2015-05-23 00:58:33

标签: entity-framework-core

考虑这个简化的模型:

public class Field 
{
   public string Name { get; set; }
   public MultilingualString Label { get; set; }
   public MultilingualString Placeholder { get; set; }
}

public class MultilingualString 
{
   public string DefaultText { get; set; }
   public IList<Globalization> Globalizations { get; set; }
}

public class Globalization 
{
   public string Text { get; set; }
   public Language Language { get; set; }
}

public class Language
{
   public string Name { get; set; }
   public string CultureString { get; set; }
}

使用我的上下文,我试图通过使用以下命令获取我的所有字段并包括其Label和Placeholder以及全球化和语言(整个事物):

var field = context.Fields
   .Include(x => x.Label.Globalizations)
   .ThenInclude(x => x.Language)
   .Include(x => x.Placeholder.Globalizations)
   .ThenInclude(x => x.Language)
   .ToList();

我抛出了以下异常:

  

System.InvalidOperationException   没有数据时读取的尝试无效。

但是,只使用第一个include / theninclude,我确实得到了预期的结果。

是什么给出的?这是一个已知的错误,还是我误解了Include / ThenInclude语法?

这是使用ef7 beta4和VS2015 RC

1 个答案:

答案 0 :(得分:1)

这是EF 7中的一个错误。应该使用aspnet/EntityFramework#2474修复,在测试版6之前不会在公共EF版本中修复。当然,您也可以尝试nightly builds