考虑这个简化的模型:
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
答案 0 :(得分:1)
这是EF 7中的一个错误。应该使用aspnet/EntityFramework#2474修复,在测试版6之前不会在公共EF版本中修复。当然,您也可以尝试nightly builds