0 登录进行投票 如题,版本为6.0的entity framework,是否需要手动Dispose DbContext对象?
我们公司做的项目自从改用using去dispose DbContext后,性能有明显的【下降】(但不确定是否是因为释放dbcontext导致)!
之前在网上看到资料说,不需要手动释放DbContext:
http://stackoverflow.com/questions/15666824/entity-framework-and-context-dispose
http://www.cnblogs.com/mecity/archive/2011/07/17/2108508.html
如果entity framework内部使用线程池的话,是否关闭DbContext反而会影响性能吗?不知实际情况如何,请大神赐教,
如果真的不需要Dispose的话,那么DbContext实现IDisposable接口的意义何在?
0 登录进行投票 你好:
根据我的经验,第一个和第二个问题的答案都是A,这个问题比较容易验证,你打开Sql Profiler,调试一下代码就知道了。
第三个问题我不太好回答,没有验证过,但理论上讲应该会有一些影响,DbContext对象的创建和销毁是要消耗资源的。
第四个问题应该不会出现这种情况,除非你执行的是比较耗时的操作,在执行阶段会占用数据库连接。ObjectContext.Connection.State属性可以检查连接状态(EF5有BUG,EF6没有问题,参考这里),也可以通过查看Sql Profiler来判断。
另外我建议你遇到问题的时候尝试查看一下EF的源码,有些疑问通过源码就可以得出结论:https://entityframework.codeplex.com/SourceControl/latest
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.
0 登录进行投票 你好:
据我所知,对于DbCoontext不需要主动去调用Dispose方法或者使用using关键字。它会自动管理数据库的连接,在需要用到的时候自动打开,不需要的时候会自动关闭,但是数据库连接资源何时被回收可能取决于GC。我猜测实现IDisposable接口的意义就在于给用户提供一个立即销毁资源并让GC回收垃圾的机制。
参考一下链接:
我觉得添加Dispose和没有添加Dispose应该性能上没有什么差别,最好通过代码和大量的数据测试一下,找出问题的根本原因。
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click HERE to participate the survey.
0 登录进行投票 您好,多谢您的回答,我还有些疑问,请您为我释疑:
0 登录进行投票 你好:
根据我的经验,第一个和第二个问题的答案都是A,这个问题比较容易验证,你打开Sql Profiler,调试一下代码就知道了。
第三个问题我不太好回答,没有验证过,但理论上讲应该会有一些影响,DbContext对象的创建和销毁是要消耗资源的。
第四个问题应该不会出现这种情况,除非你执行的是比较耗时的操作,在执行阶段会占用数据库连接。ObjectContext.Connection.State属性可以检查连接状态(EF5有BUG,EF6没有问题,参考这里),也可以通过查看Sql Profiler来判断。
另外我建议你遇到问题的时候尝试查看一下EF的源码,有些疑问通过源码就可以得出结论:https://entityframework.codeplex.com/SourceControl/latest