C# 使用using和DBContext
我确保完全理解以下代码:C# 使用using和DBContext,c#,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); con
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();
}
如您所见,使用is follow by{},如果我错了,请纠正我,这是否意味着上下文将在{}之后关闭?DBContext是否应该在每次这样的时候关闭
Cheers allMyContext是从DBContext派生的,DBContext是从Dispossible派生的。当您不再使用对象时,需要对其进行处置。在这方面使用帮助。您不需要调用context.Dispose(),因为using将自己调用它
使用块后,如果上下文无效,则最好使用。若您不使用这个函数,并使用context.Dispose()然后调用context,那个么异常就会出现。因此,它有助于更好的代码管理。MyContext是从DBContext派生的,而DBContext是从Dispossible派生的。当您不再使用对象时,需要对其进行处置。在这方面使用帮助。您不需要调用context.Dispose(),因为using将自己调用它
使用块后,如果上下文无效,则最好使用。若您不使用这个函数,并使用context.Dispose()然后调用context,那个么异常就会出现。因此,它有助于更好地管理代码。是的,
DbContext
将关闭。有关更多详细信息,请参阅。是,DbContext
将关闭。有关更多详细信息,请参阅
如果我错了,请更正,这是否意味着上下文将在{}之后关闭
是的,它会被处理掉的。您的代码有效地:
var context = new MyContext();
try
{
context.Persons.Add(person);
context.SaveChanges();
}
finally
{
context.Dispose();
}
DBContext是否应该在每次这样的时候关闭
假设这是LINQ to SQL。但是,一般来说,最好处理任何实现了IDisposable
的东西,除非您确实知道不需要这样做。(基本上,在某些情况下,IDisposable
的实现是其他东西带来的不方便的副作用。)即使在这种情况下,我也会继续这样做
如果我错了,请更正,这是否意味着上下文将在{}之后关闭
是的,它会被处理掉的。您的代码有效地:
var context = new MyContext();
try
{
context.Persons.Add(person);
context.SaveChanges();
}
finally
{
context.Dispose();
}
DBContext是否应该在每次这样的时候关闭
假设这是LINQ to SQL。但是,一般来说,最好处理任何实现了
IDisposable
的东西,除非您确实知道不需要这样做。(基本上,在某些情况下,IDisposable
的实现是其他东西带来的不方便的副作用。)即使在这种情况下,我也会继续这样做。这不是范围界定,而是处置。没有第一句话,你的答案是可以的,但是第一部分是误导性的。我也写了关于处置的文章。是的,这就是为什么我说没有第一句话,它是可以的。我建议您删除第一句。{}
定义范围,而不是使用指令本身定义<代码>for
的工作原理是一样的。它不是范围界定,而是处置。没有第一句话,你的答案是可以的,但是第一部分是误导性的。我也写了关于处置的文章。是的,这就是为什么我说没有第一句话,它是可以的。我建议您删除第一句。{}
定义范围,而不是使用指令本身定义for
的工作原理与此相同。