用完就显示 释放
用完最好释放了,也就是using(),至于怎么控制上下文的生命周期,使用唯一的线程就行了!
需要显示的dispose吗
@轰炸全世界: 需要!
一般是Using 因为Using实现了Idispiable接口的么,,在程序执行完时。会自动调用。。但在有些情况下。。比如网络问题等。。这时可能是Broken状态。。然后你在次Open的时候 有报错。。
是的,他有自己的回收机制,还有就是,他会把数据读到内存中。
借楼主宝地再顺便问下,用完立即释放掉的话,
首先每次创建、释放此上下文对象会不会很耗费性能?
第二,如果要执行多个方法,如果保证多个方法在同一事务?
关于EF上下文生命周期的问题:
1、即用即放的思想是从ADO.NET的使用方式而来,但使用这种方式,上下文无法对已加载的对象进行跟踪,也无法做到延迟加载;
2、当项目相对简单时,也有将上下文对象设置为单例的,这样可以很方便的提交事务,但在EF中,所有从数据库加载到内存中的对象都会被EF自动跟踪,当越来越多的对象被从数据库查询后,内存占用也会越来越高;
合理的做法是针对用例来实例化上下文对象,具体实现请参考:http://www.cnblogs.com/happyframework/archive/2013/04/18/3026812.html