錯誤訊息為已經開啟一個與這個 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 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.