C# mysql和实体框架中通过关系访问表的问题

C# mysql和实体框架中通过关系访问表的问题,c#,mysql,entity-framework,C#,Mysql,Entity Framework,我使用C#和实体框架访问MySQL数据库。 我正在获取存储过程的结果,并试图将它们转换为对象列表,但是,每当涉及到通过一对多关系引用表的部分时,它就会失败,并出现错误 There is already an open DataReader associated with this Connection which must be closed first. 我使用的代码如下: using System; using System.Collections.Generic; using Syste

我使用C#和实体框架访问MySQL数据库。 我正在获取存储过程的结果,并试图将它们转换为对象列表,但是,每当涉及到通过一对多关系引用表的部分时,它就会失败,并出现错误

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;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Data.Object;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用CarHireCommon.DataObjects;
名称空间CarHireServer
{
公共类数据库处理程序
{
受保护的静态DatabaseHandler实例;
受保护的CarhireEntities 1实体;
公共静态DatabaseHandler GetInstance()
{
if(实例==null)
实例=新的DatabaseHandler();
返回实例;
}
公共数据库处理程序()
{
实体=新的carhireenties1();
}
公共列表GetAvailableAsets(日期时间开始日期、日期时间结束日期)
{
ObjectResult res=Entities.GetAvailableAsets(开始日期、结束日期);
列表=新列表();
foreach(以res为单位的var资产)
{
AvailableAsets资产=新AvailableAsets();
asset.id=assetRes.id;
asset.Comment=assetRes.comments;
asset.Make=assetRes.Make;
asset.Model=assetRes.Model;
资产燃料=资产燃料;
asset.LongTerm=assetRes.LongTerm;
//这是一行错误:
asset.Category=assetRes.Category.categoryname;
列表。添加(资产);
}
退货清单;
}
}
}
我已经告诉allready存储过程返回哪个表,其他变量也可以正确访问

我还尝试了长期使用以下方法:

var cat = from b in Entities.categories where b.id == assetRes.category_id select b;
asset.Category = cat.FirstOrDefault<category>().categoryname;
var cat=from b in Entities.categories,其中b.id==assetRes.category\u id选择b;
asset.Category=cat.FirstOrDefault().categoryname;
然而,这件事仍然存在着同样的错误。

我发现这可能会帮助你解决这个问题

德国劳埃德船级社

我发现这可能会帮你解决这个问题

德国劳埃德船级社