2013-07-07 76 views
1

我使用C#和Entity Framework來訪問MySQL數據庫。 我抓住一個存儲過程的結果,並試圖把它們變成對象的列表,但是每當談到通過一對多的關係是什麼引用表中的一部分,它失敗,出現錯誤通過mysql和Entity Framework中的關係訪問表的問題

There is already an open DataReader associated with this Connection which must be closed first. 

我使用的代碼是在這裏:

using System; 
using System.Collections.Generic; 
using System.Data.Objects; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using CarHireCommon.DataObjects; 

namespace CarHireServer 
{ 
    public class DatabaseHandler 
    { 
     protected static DatabaseHandler instance; 
     protected carhireEntities1 Entities; 
     public static DatabaseHandler GetInstance() 
     { 
      if (instance == null) 
       instance = new DatabaseHandler(); 
      return instance; 
     } 

    public DatabaseHandler() 
    { 
     Entities = new carhireEntities1(); 
    } 



     public List<AvailableAssets> GetAvailableAssets(DateTime startDate, DateTime endDate) 
     { 
      ObjectResult<asset> res = Entities.GetAvailableAssets(startDate, endDate); 

      List<AvailableAssets> list = new List<AvailableAssets>(); 
      foreach(var assetRes in res) 
      { 
       AvailableAssets asset=new AvailableAssets(); 
       asset.id = assetRes.id; 
       asset.Comment = assetRes.comments; 
       asset.Make = assetRes.make; 
       asset.Model = assetRes.model; 
       asset.Fuel = assetRes.fuel; 
       asset.LongTerm = assetRes.longterm; 
       // This is the line that errors: 
       asset.Category = assetRes.category.categoryname; 
       list.Add(asset); 
      } 

      return list; 
     } 
    } 
} 

我已經告訴媒體鏈接它的存儲過程返回的表,和其他變量正確訪問。

我也試圖與做的很長的路要走:

var cat = from b in Entities.categories where b.id == assetRes.category_id select b; 
asset.Category = cat.FirstOrDefault<category>().categoryname; 

然而,事情仍然具有完全相同的錯誤異常。

回答