首页 新闻 会员 周边 捐助

关于EF释放的一个问题

0
悬赏园豆:10 [已解决问题] 解决于 2015-06-11 17:04
 最近在学习Entity Framework的时候遇到个问题

在使用DbContext的时候,什么时候去实例DbContext,什么时候去释放DbContext的问题,

我现在的写法是在类里去实例DbContext,每个方法直接去使用DbContext的实例,(而非每个方法都实例一次)不去主动释放,因为在调用SaveChanges()后会释放掉数据库连接,我不知道这样写会有什么问题,是否还需要在每次调用的时候去DbContext.Connection.Close()一下?

我不知道我理解的延迟加载的功能对不对,我在查询的时候返回的是我自己的实体,而非数据库实体,这种情况下查询完去释放DbContext应该不会有延迟加载的问题出现吧?
 
 
希望对EF理解较深的大神能帮忙解答一下疑问,或许问的也不太准确,希望解惑一下~!
EF
问题补充:

关于实例DbContext,使用一个实例或者每个方法都重新实例会有什么样的区别呢?

连带着释放DbContext也一样,需要怎么做才是最严谨的

澈澈的主页 澈澈 | 菜鸟二级 | 园豆:440
提问于:2015-06-11 15:25
< >
分享
最佳答案
0

使用完就释放,还是别保持上下文了。之前用的时候用线程单例,内存溢出了都

收获园豆:10
吴瑞祥 | 高人七级 |园豆:29449 | 2015-06-11 15:38

意思就是每次都去重新实例,使用完释放么?

如果每次都去实例不会造成什么负担么?

 

能简单说下区别或者原因么

澈澈 | 园豆:440 (菜鸟二级) | 2015-06-11 15:54

@澈澈: 性能损耗是肯定有的。但你既然用ef了。这种级别的性能问题,就不需要去考虑了。只要注意别生让EF生成一些低性能SQL就好

EF上下文会做自己的缓存,如果保持了上下文,缓存就不会被释放。

吴瑞祥 | 园豆:29449 (高人七级) | 2015-06-11 16:02

@吴瑞祥: 所以我可以理解为上下文的使用最好是每次都实例一下以保证的清爽,而释放的必须的?

对于释放这块增删改我可以不用主动去释放,在SaveChanges()里已经做了释放了,而查询需要我主动释放一下对么?

澈澈 | 园豆:440 (菜鸟二级) | 2015-06-11 16:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册