[Asp.net] 已經開啟一個與這個 command 相關的 datareader 必須先將它關閉。

  • 4619
  • 0

錯誤訊息為已經開啟一個與這個 command 相關的 datareader 必須先將它關閉。的解決方式

前言

在練習的時候遇到這個問題
於是上網找了相關解法回來實作
分享給大家

資料模型

我的資料模型有Department與Member
為一個Department對多個Member的一對多屬性

發生錯誤

照理說
有拉關聯性的資料庫可以使用Member.Department.DepartmentName這種方式取得資料
(至少我之前學到的應該是這樣)
但在這裡發生了已經開啟一個與這個 command 相關的 datareader 必須先將它關閉。的錯誤
上網找了資料得到以下兩種解法

1,設定ConnectionString加上MultipleActiveResultSets=true,但只適用於SQL 2005以後之版本
2.先讀出放置在List中

兩種解法都測過了

但只有第二種有用 
解法如下

                    var vms = new List<MemberVM>();
                    var linq = (from c in db.Members select c).ToList();
                    foreach (var item in linq)
                    {
                        vms.Add(new MemberVM
                        {
                            DepartmentId = item.DepartmentId,
                            MemberId = item.MemberId,
                            MemberName = item.MemberName,
                            DepartmentName = item.Department.DepartmentName
                        });
                    }
參考資料

http://zhoupei1.blog.163.com/blog/static/454544082010103011251835/

Write By Charley Chang 


新手發文,若有錯誤還請指教,
歡迎留言或Mail✉給我

創用 CC 授權條款


本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.