![]() |
1
33
如果创建一个上下文,则必须稍后释放它。如果你应该使用
什么?
我没有查看代码,但至少我检查了它,以关闭数据库连接及其底层套接字或传输机制使用的任何资源。 |
![]() |
2
4
由于您不知道垃圾收集器何时处理某个项,所以最好将实现IDisposable的对象包装在 使用块 如果你知道什么时候结束。 |
![]() |
3
4
每 Progamming Entity Framework :“您可以显式地释放ObjectContext或等待垃圾回收器执行该作业。” 因此,简而言之,虽然不需要using语句,但如果您知道已经使用了objectcontext,这是最佳实践,因为资源将立即释放,而不是等待垃圾收集。 |
![]() |
4
3
EF5及之前版本
EF6及之后版本
|
![]() |
5
1
始终,如果实例化实现IDisposable的类,则负责对其调用Dispose。除一种情况外,这意味着 使用 块。 |
![]() |
6
1
处理时,ObjectContext会处理其他拥有的对象。 包括像EntityConnection这样的东西,它包装了实际的数据库连接,即通常是一个sqlConnection。 因此,如果“sqlconnection”打开,则在释放objectcontext时将关闭它。 |
![]() |
7
1
我真的在ado.net和ef v.6中测试了这个东西,并在SQL表中观察了连接。
测试方法如下: 1)使用ADO.NET
2)使用ADO.NET
1)EF与使用。
2)不使用EF
我不知道为什么会这样,但EF自动关闭了连接。另外,所有使用EF的存储库和UnitOfWork模式都不使用using。这对我来说很奇怪,因为dbContext是一次性类型,但这是事实。 也许在微软他们做了一些新的处理? |
![]() |
8
0
我注意到(虽然只有一个应用程序)显式处理导致mscorlib中的线程中止异常,这些异常在应用程序代码之前被捕获,但至少在我的情况下,会导致明显的性能损失。还没有对这个问题做过任何重要的研究,但是如果你这样做的话,可能有一些值得考虑的事情。只需观察调试输出,看看是否得到相同的结果。 |
![]() |
9
0
如果Dispose关闭与DB的连接,则不建议调用它。 例如,在ADO.NET中,连接位于连接池中,并且在超时或应用程序池停止之前永远不会关闭。 |
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
![]() |
Murat Güzel · EF存储库模式错误{'Id'}已被跟踪 2 年前 |
![]() |
dotnetdevcsharp · 减少基于数据类型获取设置的方法数量 2 年前 |
![]() |
saravanan049 · 在实体框架中回滚Azure SQL数据库 2 年前 |