我确保完全理解以下代码:
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应该每次都关闭,比如这个吗?
干杯全部
答案 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,那么异常就会出现。因此,它有助于更好的代码管理。