Entity Framework 函数求值需要运行所有线程。

zerommc 2018-06-14 10:35:48
Entity Framework 6.2.0 查询



请求为什么会出现 “函数求值需要运行所有线程。”
...全文
5567 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerommc 2018-06-22
  • 打赏
  • 举报
回复
引用 11 楼 weixin_38925245 的回复:
就是想知道 为什么要DAL 有大牛解惑吗


其实EF框架,已经替代了传统三层中的 DAL, 主要是处理用户数据与数据库之间的增删改查,
但在实际项目架构中,即使使用了EF,依然保留了DAL层,个人觉得这样做也无可厚非,这里的DAL的主要是对EF的应用扩展,也可能是受到传统思维的影响
chenzhe014 2018-06-22
  • 打赏
  • 举报
回复
http://mehdi.me/ambient-dbcontext-in-ef6/

dbcontext的使用可以参考一下这篇文章
极客诗人 2018-06-15
  • 打赏
  • 举报
回复
就是想知道 为什么要DAL 有大牛解惑吗
zerommc 2018-06-14
  • 打赏
  • 举报
回复
补充下: MVC是5.0 .Net Framework 是 4.6.1
zerommc 2018-06-14
  • 打赏
  • 举报
回复

出现这种情况的原因,我个人觉得应该是 IQueryable 的延迟加载机制导致,准确的说这个不应该算是个错误,只能说是个错误提示
原因一、IQueryable 明确说明该接口,“提供对数据类型已知的特定数据源的查询进行计算的功能”,而错误提示“函数求值需要运行所有线程”,那么意思是
var result= dbContext.Set<T>().Where(whereLambda); 这种写法只是 完成了延迟查询的准备工作
原因二、如果在上述方法后调用 ToList(), ToArray() ,不会有任何异常或错误提示
原因三、即使不使用ToList()之类的方法,直接用Foreach,也是可以拿到结果的
综上:这种方法本身是正确的,只是加了“意外”的错误提示
以上纯属个人观点,端午后结贴,在此期间,希望各位码友 多多发表评论一起探讨,相互学习
圣殿骑士18 2018-06-14
  • 打赏
  • 举报
回复
看你的代码,又是一个被DAL耽误的EF开发者。没有DAL,EF简洁10倍,功能强大10倍。
圣殿骑士18 2018-06-14
  • 打赏
  • 举报
回复
不知道为什么,很多人喜欢用单例dbcontext。这不是可不可以的问题,本来这种单例用法就是不对的。 EF设计出来不是给你这么用的,EF的dbcontext承载了事务,承载了缓存机制,在这两个前提下,就不应该使用单例,使用单例就相当于明明告诉你此处禁止游泳,你就是要去寻死一样。必然导致各种问题。 只有一种情况下,是可以用单例的,就是单机版程序。
zerommc 2018-06-14
  • 打赏
  • 举报
回复


我发现是 IQueryable 这种返回数据的问题,正在研究
正怒月神 版主 2018-06-14
  • 打赏
  • 举报
回复
引用 5 楼 zerommc 的回复:
另外,我其他方法都是对的,就这个方法出现这种问题,虽然有这种的提示,但数据能查出来
public DBContext db = DbContextFactory.GetCurrentContext(); 你在dal中是这么调用的饿吗
zerommc 2018-06-14
  • 打赏
  • 举报
回复


另外,我其他方法都是对的,就这个方法出现这种问题,虽然有这种的提示,但数据能查出来
正怒月神 版主 2018-06-14
  • 打赏
  • 举报
回复
同3楼, 每次实例化dbcontext
丰云 2018-06-14
  • 打赏
  • 举报
回复
线程冲突了, 小白同学就不要用单例模式, 老老实实的每次用using创建新的dbcontext对象

62,041

社区成员

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

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

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

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