1

C# と Entity Framework を使用して MySQL データベースにアクセスしています。ストアド プロシージャの結果を取得して、それらをオブジェクトのリストに変換しようとしていますが、1 対多の関係を介してテーブルを参照する部分になると、エラーで失敗します

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;

ただし、まったく同じエラーで例外が発生します。

4

1 に答える 1

1

C# Entity Framework: There are already an open DataReader associated with this Connection that must be closed first .おそらくこの質問で正確に役立つでしょう。

GL!

于 2013-07-07T18:17:32.543 に答える