C# mysql和实体框架中通过关系访问表的问题
我使用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
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;
然而,这件事仍然存在着同样的错误。我发现这可能会帮助你解决这个问题
德国劳埃德船级社 我发现这可能会帮你解决这个问题
德国劳埃德船级社