J'utilise Entity Framework 5 code first
et ASP.NET MVC 3
.
J'ai du mal à faire peupler l'objet enfant d'un objet enfant. Voici mes cours.
Classe d'application;
public class Application
{
// Partial list of properties
public virtual ICollection<Child> Children { get; set; }
}
Classe enfant:
public class Child
{
// Partial list of properties
public int ChildRelationshipTypeId { get; set; }
public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}
Classe ChildRelationshipType:
public class ChildRelationshipType
{
public int Id { get; set; }
public string Name { get; set; }
}
Partie de la méthode GetAll dans le référentiel pour renvoyer toutes les applications:
return DatabaseContext.Applications
.Include("Children");
La classe Child contient une référence à la classe ChildRelationshipType. Pour travailler avec les enfants d'une application, j'aurais quelque chose comme ceci:
foreach (Child child in application.Children)
{
string childName = child.ChildRelationshipType.Name;
}
J'obtiens ici une erreur indiquant que le contexte de l'objet est déjà fermé.
Comment spécifier que chaque objet enfant doit inclure l' ChildRelationshipType
objet comme je l'ai fait ci-dessus?
Réponses:
Si vous incluez la bibliothèque,
System.Data.Entity
vous pouvez utiliser une surcharge de laInclude()
méthode qui prend une expression lambda au lieu d'une chaîne. Vous pouvez alorsSelect()
sur les enfants avec des expressions Linq plutôt que desstring
chemins.la source
System.Data.Entity;
Microsoft.Data.Entity
Avec EF Core dans .NET Core, vous pouvez utiliser le mot clé
ThenInclude
:Inclure les enfants de la collection pour enfants:
la source
J'ai fini par faire ce qui suit et cela fonctionne:
la source
Un bon exemple d'utilisation du modèle de référentiel générique et d'implémentation d'une solution générique pour cela pourrait ressembler à ceci.
la source