2016-03-19 8 views
2

So möchte ich eine Liste itterate ich von meinem Db und in einer Schleife geholt Elemente hinzufügen, um eine neue Liste von ihnen eins nach dem anderen zu holen:DbContext angeordnet ist, wenn das Iterieren Liste resultierende

List<BasketItem> items = ps.basketRepo.GetUserItems(User.Identity.GetUserId()).ToList<BasketItem>(); 
List<BasketVM> vms = new List<BasketVM>(); 
foreach (BasketItem item in items) 
{ 
    BasketVM vm = new BasketVM(); 
    vm.CoreItem = item; 
    vm.ItemToestel = ps.ToestelRepo.GetByID(item.BesteldToestelId); 
    vms.Add(vm); 
} 
return View(vms.ToList<BasketVM>()); 

Dieses Ergebnis in einem Fehler Likes von: "Der Vorgang kann nicht abgeschlossen werden, da der DbContext entsorgt wurde."

Jeder Weg um dies zu umgehen? Ich habe auch versucht() in meine Linq-Abfrage wie folgt Fügen Sie unter Verwendung der zusätzlichen Objekte in einem Rutsch zu bekommen:

using (context) 
{ 
    var query = (from b in context.BasketItem.Include(t=>t.SelectedToestel) where b.UserId==uId select b); 
    return query.ToList<BasketItem>(); 
} 

Aber es funktioniert nicht, mache ich einen Fremdschlüssel zwischen den BasketItem & toestel Tabellen festlegen müssen für das funktioniert?

dank

EDIT: Hier sind die beteiligten Modelle

public class BasketItem 
{ 
    public int Id { get; set; } 
    public DateTime Timestamp { get; set; } 
    public Toestel SelectedToestel { get; set; } 
    public int BesteldToestelId { get; set; } 
    public int Aantal { get; set; } 
    public String UserId { get; set; } 
} 

public class Toestel 
{ 
    public int Id { get; set; } 
    public string Naam { get; set; } 
    public string Omschrijving { get; set; } 
    public double AankoopPrijs { get; set; } 
    public double HuurPrijs { get; set; } 
    public int Stock { get; set; } 
    public string Afbeelding { get; set; } 
    public List<OS> Os { get; set; } 
    public List<Framework> Framework{ get; set; } 

} 
+0

Ja, Sie würden Navigationseigenschaften. Zeigen Sie Modelle für 'BasketItem' und' Toestel' –

+0

Hey Stephen, ich fügte die Modelle in einer Bearbeitung hinzu – PabloDegryse

+0

Bitte zeigen Sie Ihre 'ps.basketRepo.GetUserItems' Methode. – Yogi

Antwort

1

In meinem Repository wurde ich das DbContext mit einem Mit Anweisung zugreifen, die den Kontext verfügt, wenn außerhalb des Gültigkeitsbereichs gehen.

Ich ging meinen Weg um dies, indem ich nicht die Using-Anweisung und manuelle Entsorgung des Dbcontext (Feld in meinem Repository), wenn die Iteration wurde getan.

Es ist wahrscheinlich nicht die sauberste Art, es zu tun, aber es funktioniert jetzt!

Verwandte Themen