2016-03-19 17 views
2

を反復するときDbcontextは、だから私は、私は私のDBからフェッチし、ループ内でそれらを一つずつフェッチすることによって、新しいリストに項目を追加するリストをitterateしたい配置された:結果のリスト

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>()); 

この結果をエラーに "DbContextが破棄されたため、操作を完了できません。"

これを回避する方法はありますか? 、私はまた、一度に余分なオブジェクトを取得するには、このように私のLINQクエリに()を含め使用してみました:

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

しかし、それは働いていない、私はのためのBasketItem & Toestelテーブル間の外部キーを設定する必要がありますこれはうまくいく?

おかげ

編集:ここで私はスコープの外に行くときのコンテキストを配置文を使用してでDbcontextにアクセスしていた私のリポジトリに関与モデル

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

はい、ナビゲーションプロパティがあります。 'BasketItem'と' Toestel'のモデルを表示します –

+0

スティーブンス、私はモデルを編集に追加しました – PabloDegryse

+0

'ps.basketRepo.GetUserItems'メソッドを表示してください。 – Yogi

答えて

1

です。

私はこのステートメントを書かずに、のDbcontext(私のリポジトリ内のフィールド)を手動で処理していたので、私はこれを回避しました。

これはおそらく最もクリーンな方法ではありませんが、現在は機能しています。

関連する問題