从性能的角度来看,最好是在using()语句中包含使用LINQ的每个语句,还是声明一个类级实例并在每个方法中使用?
例如:
public void UpdateSomeRecord(Record recordToUpdate)
{
using(var entities = new RecordDBEntities())
{
// logic here...
}
}
private RecordDBEntities entites = new RecordDBEntities();
public void UpdateSomeRecord(Record recordToUpdate)
{
// logic here...
}
或者两种方式无关紧要?
谢谢!
答案 0 :(得分:3)
using
语句可能会损害性能,因为它需要更长时间才能运行,但在这种情况下,这不应该是您的担忧。如果一个类型实现IDisposable
它真的应该包含在using
语句中,以便它可以自己清理。
这个清理代码运行时间比没有清理代码要长,这就是为什么我说using
语句需要更长时间才能运行。但这并不意味着不应该拥有using
语句。我认为您应使用using
语句,即使可能需要更长时间才能运行。
我想我想说的是你在这里比较苹果和橘子,因为性能比较只有在被比较的代码产生相同的输出和相同的副作用时才有意义。您的示例并非如此,以至于我认为这不是性能问题。
在这种情况下,最佳做法是对实现using
的类型使用IDisposable
语句,而不管using
语句是否会使方法运行得更长。如果您需要知道如何运行更长时间,那么您应该使用分析器来识别相关代码是否会产生瓶颈。
答案 1 :(得分:2)
实际上你的问题是关于LINQ DataContext的生命周期管理。
您可能希望查看以下文章:Linq to SQL DataContext Lifetime Management