实体框架上下文应该使用语句吗?

Joh*_*rth 64 c# entity-framework

Entity Framework上下文对象实现Dispose()方法,该方法"释放对象上下文使用的资源".它真的有什么作用?总是将它放入using {}语句会不会是一件坏事?我已经看到它使用和不使用using语句.

我特意要在WCF服务方法中使用EF上下文,创建上下文,做一些linq并返回答案.

编辑:似乎我不是唯一一个对此感到疑惑的人.另一个问题是Dispose()方法中真正发生了什么.有人说它关闭了连接,有些文章没有说.这是怎么回事?

Dan*_*ner 34

如果创建上下文,则必须稍后进行处理.如果你应该使用该using语句取决于上下文的生命周期.

  1. 如果在方法中创建上下文并仅在此方法中使用它,则应该使用该using语句,因为它为您提供了异常处理而无需任何其他代码.

  2. 如果你使用上下文更长的时间 - 也就是生命时间不受方法执行时间的限制 - 你不能使用该using语句,你必须Dispose()自己打电话,并注意你总是称之为.

是什么Dispose()为对象范围内呢?

我没有查看代码,但至少我认为它可以用它的底层套接字或传输机制使用的任何资源来关闭数据库连接.


Cor*_*use 5

根据Progamming Entity Framework:“您可以显式部署ObjectContext或等待垃圾收集器完成这项工作。”

简而言之,虽然不需要using语句,但是如果您知道您已经完成ObjectContext的使用,那么这是最佳实践,因为可以立即释放资源而不是等待垃圾回收。