ef5.0 (using 释放问题

zhang1struts1yun 2014-11-06 05:27:31

public static class BaseRepository<T> where T : class
{
public static IEnumerable<T> GetList(string sql)
{
IEnumerable<T> query = null;
using (Entities db = new Entities())
{
query = db.Database.SqlQuery<T>(sql); //db.Set<T>().SqlQuery(sql);
return query;
}
}、
}

IEnumerable<SJJH_USER> ssy = BaseRepository<SJJH_USER>.GetList("sql语句")

抛异常:DbContext已释放,无法连接 , 怎么让它不报错
...全文
288 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
知道vdsdf 2017-07-17
  • 打赏
  • 举报
回复
引用 6 楼 loveljsheng 的回复:
[quote=引用 5 楼 zhang1struts1yun 的回复:] [quote=引用 3 楼 winner2050 的回复:] GetList(string sql) 一看这,你们的领域驱动就走上邪路了。
ef 不支持多表查询,不用sql怎么关联多表查询呢?[/quote] GroupJoin[/quote] 那大神我就有一个问题了,ef对动态多参数组合排序的支持是很难的,我要如何用ef实现 order by Name desc,Sex asc的功能呢
ljsheng 2016-07-13
  • 打赏
  • 举报
回复
引用 5 楼 zhang1struts1yun 的回复:
[quote=引用 3 楼 winner2050 的回复:] GetList(string sql) 一看这,你们的领域驱动就走上邪路了。
ef 不支持多表查询,不用sql怎么关联多表查询呢?[/quote] GroupJoin
wjq 2014-11-07
  • 打赏
  • 举报
回复
return query.ToList(); 记住,从EF的Context执行出来的东西是表达式树,不是数据本身,只有实际用到数据的时候才会真正去数据库中查询。你返回的是表达式,而非数据,而你拿到表达式的时候,DBContext就关掉了,你再请求数据,自然无法连接数据库了。所以要在DBContext关掉之前通过ToList()/ToArray()等方法拿到实际数据。
zhang1struts1yun 2014-11-07
  • 打赏
  • 举报
回复
引用 3 楼 winner2050 的回复:
GetList(string sql) 一看这,你们的领域驱动就走上邪路了。
ef 不支持多表查询,不用sql怎么关联多表查询呢?
winner2050 2014-11-06
  • 打赏
  • 举报
回复
GetList(string sql) 一看这,你们的领域驱动就走上邪路了。
xk280399649 2014-11-06
  • 打赏
  • 举报
回复
需要在using 中 取出来需要的数据,不然 函数执行完毕后 资源会被释放
sunny906 2014-11-06
  • 打赏
  • 举报
回复
调试到上下文的地方,是不是using用的不恰当,访问了已经被释放的上下文

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧