2016-12-09 34 views
0

選擇我收到以下錯誤,當MVC打開DataReader的錯誤,當我在試圖從數據庫中選擇來填充一個變量:從數據庫

「已經有與此命令 相關聯的打開的DataReader必須先關閉它。「

  //Admin Venue Partial View 
      public ActionResult AdminVenuesTablePartialView() 
      { 
       VenueTownViewModel vt = new VenueTownViewModel(); 
       List<VenueTownViewModel> model = new List<VenueTownViewModel>(); 

       foreach (var venue in db.Venues) 
       { 
        vt.VenueID = venue.VenueID; 
        vt.VenueName = venue.VenueName; 
        vt.VenueTown = db.Towns.Find(venue.TownID).Town; 
        vt.VenueActive = venue.VenueActive; 

        model.Add(vt);     
       } 

       return PartialView("_AdminVenues", model.OrderBy(v => v.VenueName).ToList()); 
      } 
+1

的問題是你的'vt.VenueTown = db.Towns.Find(venue.TownID).Town原因;'你做另一個數據庫調用,而你的閱讀'Venues'。如果您的模型使用FK關係正確設置,則不需要該呼叫。 –

+0

是的,這很有道理,我會對模型做出改變,謝謝Stephen! –

回答

-1

你不能使用它像this.Because類是引用類型。 試試這個:

var venueList = db.Venues; 

    foreach (var venue in venueList) 
       { 
        VenueTownViewModel vt = new VenueTownViewModel(); 
        vt.VenueID = venue.VenueID; 
        vt.VenueName = venue.VenueName; 
        vt.VenueTown = db.Towns.Find(venue.TownID).Town; 
        vt.VenueActive = venue.VenueActive; 

        model.Add(vt); 
       } 
+0

你正確的初始化循環內的新實例,但這與問題無關,仍然會拋出完全相同的錯誤 –

+0

@Cathal試試這個: var venueList = db.Venues; foreach(場館列表中的var場地) – codelover