关于C#中LINQ2Sql性能的问题

时间:2009-09-01 14:50:50

标签: c# performance linq-to-sql

从性能的角度来看,最好是在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...
}

或者两种方式无关紧要?

谢谢!

2 个答案:

答案 0 :(得分:3)

using语句可能会损害性能,因为它需要更长时间才能运行,但在这种情况下,这不应该是您的担忧。如果一个类型实现IDisposable它真的应该包含在using语句中,以便它可以自己清理。

这个清理代码运行时间比没有清理代码要长,这就是为什么我说using语句需要更长时间才能运行。但这并不意味着不应该拥有using语句。我认为您使用using语句,即使可能需要更长时间才能运行。

我想我想说的是你在这里比较苹果和橘子,因为性能比较只有在被比较的代码产生相同的输出和相同的副作用时才有意义。您的示例并非如此,以至于我认为这不是性能问题。

在这种情况下,最佳做法是对实现using的类型使用IDisposable语句,而不管using语句是否会使方法运行得更长。如果您需要知道如何运行更长时间,那么您应该使用分析器来识别相关代码是否会产生瓶颈。

答案 1 :(得分:2)

实际上你的问题是关于LINQ DataContext的生命周期管理。

您可能希望查看以下文章:Linq to SQL DataContext Lifetime Management