使用using和DBContext

时间:2013-04-23 06:24:25

标签: c#

我确保完全理解以下代码:

static void Main(string[] args)
{
    var person = new Person {FirstName = "Nadege", 
    LastName = "Deroussen", BirthDate = DateTime.Now};
    using (var context = new MyContext())
    {
        context.Persons.Add(person);
        context.SaveChanges();
    }
    Console.Write("Person saved !");
    Console.ReadLine();
}

如您所见,使用后跟{},如果我错了,请纠正我,是否意味着在{}后关闭上下文?一个DBContext应该每次都关闭,比如这个吗?

干杯全部

3 个答案:

答案 0 :(得分:5)

  

如果我错了,请纠正我,这是否意味着在{}后关闭上下文?

它会被处理掉,是的。您的代码是有效的:

var context = new MyContext();
try
{
    context.Persons.Add(person);
    context.SaveChanges();
}
finally
{
    context.Dispose();
}
  

DBContext应该每次都关闭吗?

假设这是LINQ to SQL,you don't actually need to dispose of the context。但是,一般来说,处理实现IDisposable的任何事情是个好主意 - 除非你实际上知道你不需要的。 (基本上在某些情况下,IDisposable的实现是其他方面不方便的副作用。)即使在这种情况下,我也会继续这样做。

答案 1 :(得分:1)

是的,DbContext将被关闭。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.80).aspx

答案 2 :(得分:0)

MyContext派生自DBContext,它派生自Disposable。当您不再使用对象时,需要处置它。在此使用帮助。您不需要调用context.Dispose(),因为使用它将自己调用它。

使用block是好的,因为使用块后上下文无效。如果你不使用它并转到context.Dispose()然后调用context,那么异常就会出现。因此,它有助于更​​好的代码管理。