Le chaînage de plusieurs include avec thenInclude lève System.InvalidOperationException

entity-framework-core

Question

Considérez ce modèle simplifié:

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; }
}

En utilisant mon contexte, j'essaie d'obtenir tous mes champs et d'inclure leur étiquette et leur espace réservé avec les globalisations et le langage (le tout) en utilisant la commande suivante:

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

Je reçois l’exception suivante:

System.InvalidOperationException Tentative non valide de lire en l'absence de données.

Cependant, en utilisant uniquement le premier include / theninclude, j'obtiens les résultats escomptés.

Ce qui donne? Est-ce un bogue connu ou ai-je mal compris la syntaxe Include / ThenInclude?

Ceci utilise ef7 beta4 avec VS2015 RC

Réponse acceptée

Ceci est un bogue dans EF 7. À corriger avec aspnet / EntityFramework # 2474 , qui ne figurera pas dans la version publique EF avant la version bêta 6. Bien sûr, vous pouvez également essayer des versions nocturnes




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi