我正在编写一个仅执行以下操作的简单控制台应用程序:
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”语句会怎样?
如果您提供的答案带有官方参考,我将不胜感激。
请注意,我担心的是内存和资源泄漏。暂时我不关心数据丢失。
答案 0 :(得分:1)
回答您的3个问题: