2014-01-14 48 views
0

我有兩個導航屬性在一個到另一個模型。模型看起來像這樣: 我在同一視圖中調用兩個模型。將SuiteCategoryModels作爲默認值,將SuitesModels作爲分部視圖。MVC DataReader連接相關問題

public class SuiteCategoryModels 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int SuiteCatID { get; set; } 
    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Category")] 
    [StringLength(50, ErrorMessage = "The {0} must be at least 6 characters long.", MinimumLength = 6)] 
    public string CatName { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Category Description")] 
    [StringLength(500, ErrorMessage = "The {0} must be at least 6 characters long.", MinimumLength = 6)] 
    public string CatDesc { get; set; } 

    public virtual ICollection<SuitesModels> SuitesModels { get; set; } 
} 

和第二模型是這樣的:

 public class SuitesModels 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int SuiteID { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Suite Name")] 
    [StringLength(50, ErrorMessage = "The {0} must be at least 6 characters long.", MinimumLength = 6)] 
    public string SuiteName { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [Display(Name = "Description")] 
    [StringLength(50, ErrorMessage = "The {0} must be at least 6 characters long.", MinimumLength = 6)] 
    public string SuiteDesc { get; set; } 

    [DataType(DataType.ImageUrl)] 
    [Display(Name = "Picture")] 
    public string SuitePix { get; set; } 

    [Required] 
    [Display(Name = "Rate")] 
    public int SuiteRate { get; set; } 

    [Required] 
    [Display(Name = "Persons Per Suite")] 
    public int PersonPerSuite { get; set; } 

    [Required] 
    [Display(Name = "Status")] 
    public bool SuiteStatus { get; set; } 

    public int SuiteCatID { get; set; } 

    public virtual SuiteCategoryModels SuiteCategory { get; set; } 
} 

我創建了一個控制器操作以查看這樣的:

public ActionResult Index() 
    { 
     var m = db.SuiteCategoryModels.ToList(); 
     //ViewBag.BB = 
     //Dispose(false); 
     return View(m); 
    } 

和其他這樣的:

public ActionResult SuitesIndex(int id = 0) 
    { 
     var mm = db.Suites.Select(r => r.SuiteCategory) 
        .Where(r => r.SuiteCatID == id); 
     //SuitesModels suitesmodels = db.Suites.Find(id); 
     if (mm == null) 
     { 
      return HttpNotFound(); 
     } 
     return PartialView("SuitesIndex", mm.ToList()); 
    } 

但我有一個錯誤頁面指出:There is already an open DataReader associated with this Command which must be closed first.

  1. 這個錯誤的原因是什麼?
  2. 我該怎麼做才能糾正這個問題?
+0

db是否在兩種情況下都引用相同的實例,例如類成員?如果不是,它應該。 – snort

+1

重複? http://stackoverflow.com/questions/6062192/there-is-already-an-open-datareader-associated-with-this-command-which-must-be-c – Jeff

+1

看到這個問題:http:// stackoverflow。 com/questions/7927990/entity-framework-there-is-already-an-open-datareader-associated-with-this-comma – snort

回答

0

您需要添加MultipleActiveResultSets=true;到您的連接字符串。