Ich benutze Entity Framework 5 code first
und ASP.NET MVC 3
.
Ich kämpfe darum, das untergeordnete Objekt eines untergeordneten Objekts zum Auffüllen zu bringen. Unten sind meine Klassen ..
Anwendungsklasse;
public class Application
{
// Partial list of properties
public virtual ICollection<Child> Children { get; set; }
}
Kinderklasse:
public class Child
{
// Partial list of properties
public int ChildRelationshipTypeId { get; set; }
public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}
ChildRelationshipType-Klasse:
public class ChildRelationshipType
{
public int Id { get; set; }
public string Name { get; set; }
}
Teil der GetAll-Methode im Repository, um alle Anwendungen zurückzugeben:
return DatabaseContext.Applications
.Include("Children");
Die Child-Klasse enthält einen Verweis auf die ChildRelationshipType-Klasse. Um mit den Kindern einer Anwendung zu arbeiten, hätte ich ungefähr Folgendes:
foreach (Child child in application.Children)
{
string childName = child.ChildRelationshipType.Name;
}
Ich erhalte hier die Fehlermeldung, dass der Objektkontext bereits geschlossen ist.
Wie gebe ich an, dass jedes untergeordnete Objekt das ChildRelationshipType
Objekt enthalten muss, wie oben beschrieben?
Antworten:
Wenn Sie die Bibliothek einschließen
System.Data.Entity
, können Sie eine Überladung derInclude()
Methode verwenden, die einen Lambda-Ausdruck anstelle einer Zeichenfolge verwendet. Sie können dannSelect()
über Kinder mit Linq-Ausdrücken anstatt überstring
Pfade.quelle
System.Data.Entity;
Microsoft.Data.Entity
Mit EF Core in .NET Core können Sie das Schlüsselwort verwenden
ThenInclude
:Kinder aus der Kindersammlung einbeziehen:
quelle
Am Ende habe ich Folgendes gemacht und es funktioniert:
quelle
Ein gutes Beispiel für die Verwendung des generischen Repository-Musters und die Implementierung einer generischen Lösung hierfür könnte ungefähr so aussehen.
quelle