[英]Importance of disposing EF DbContext before the console app exits in C#
我正在编写一个仅执行以下操作的简单控制台应用程序:
1.在数据库中查询一些数据。
2.处理此数据。
3.更新数据库。
我编写了仅包含Main方法的代码,如下所示:
class Program
{
static void Main(string[] args)
{
try
{
var dbContext = new MyDatabaseContext();
var dbRecord = dbContext.MyTable.First(r => r.Status == 1);
// Do some work
dbRecord.Status = 2;
dbContext.SaveChanges();
}
catch(Exception)
{
// left empty
}
}
}
我的一位同事告诉我,我必须将代码包含在“使用”语句中,以关闭应用程序与数据库服务器之间的连接,如下所示:
class Program
{
static void Main(string[] args)
{
try
{
using(var dbContext = new MyDatabaseContext())
{
var dbRecord = dbContext.MyTable.First(r => r.Status == 1);
// Do some work
dbRecord.Status = 2;
dbContext.SaveChanges();
}
}
catch(Exception)
{
// left empty
}
}
}
我知道在离开范围或不再需要该对象之前,布置“ IDisposable”对象的重要性,以避免内存泄漏和释放资源。
但是我的理解是,就我而言,该程序已经结束,并且我不需要显式处理DbContext,因为在应用程序结束后,该应用程序与数据库服务器之间将不存在任何连接。
因此,我需要回答以下问题:
1.就我而言,在程序退出之前放置DbContext对象是否重要?
2.即使关闭程序后,连接是否仍会打开(通常是例外情况,或者由用户关闭)?
3.如果我不使用“ using”语句会怎样?
如果您提供带有官方参考的答案,我将不胜感激。
请注意,我担心的是内存和资源泄漏。 目前,我不关心数据丢失。
要回答您的3个问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.