【发布时间】:2017-04-11 07:54:34
【问题描述】:
我使用 ef 6.13 获取一些数据,并将新的类数据返回到我的应用程序。
public List<v_apply_detail2> GetApplyList()
{
using (yoyoEntities ds = new yoyoEntities())
{
return datas = ds.v_apply_detail.Select(p => new v_apply_detail2 { apply_id = p.apply_id, time_line = ds.yoyo_apply_timeline.ToList() }).ToList();
}
}
运行正常。
并且我想在 New Func 中移动 Select 方法,并使用 dbcontext yoyoEntities(ds)。
Func<v_apply_detail, v_apply_detail2> SelectOutApply(yoyoEntities ds, bool includetimeline = false)
{
return (p => new v_apply_detail2
{
apply_id = p.apply_id,
time_line = includetimeline ? ds.yoyo_apply_timeline.Where(x => x.apply_id == p.apply_id).OrderByDescending(x => x.time).ToList() : null
});
}
public List<v_apply_detail2> GetApplyList()
{
using (yoyoEntities ds = new yoyoEntities())
{
return datas = ds.v_apply_detail.Select(SelectOutApply(ds,true)).ToList();
}
}
当我调用 GetApplyList 函数时,它得到一个错误:实体框架:已经有一个打开的 DataReader 与此 Connection 关联,必须先关闭。
如何在 Func 或 Expression 中使用 dbcontext? 伙计们想想吧!
【问题讨论】:
-
为什么不尝试将查询而不是数据上下文传递给函数?
-
同意@AmanvirSinghMundra,您正在为两个不同的数据集“同时”在 Select 中执行 Where。 EF 正在尝试同时访问数据库
-
我需要为不同的请求返回不同的数据,并且我有一些功能具有相同的查询,所以我需要通用的 Select Func。
标签: c# entity-framework lambda