高效使用LINQ2SQL

本文关键字:LINQ2SQL 高效 | 更新日期: 2023-09-27 17:57:30

我是一个庞大的LINQ2SQL粉丝。但我在每个函数中都使用了大量DataContext,并随后使用了查询。然而,我知道还有更好的方法…

也许是这样的?

 protected dbMYDataContext FA(dbMYDataContext dt)
    {
         using (dt = new dbMYDataContext())
        {
            return dt;
        }
    }
 protected void FunctionA() : FA
        {
        }
 protected void FunctionB() : FA
        {
        }

因此,口头禅是,每当你想创建DataContext时,都要继承或调用这个函数FA。但是,当我继承它时,我会出错。问题似乎是什么,减少一直使用DataContext的最佳实践是什么。

建议?

高效使用LINQ2SQL

在使用L2S时,我做了一些事情,这些事情极大地改善了情况。

1) 使用问题中显示的using语句。这是正确的做事方式

2) 如果我正在进行只读查询。。。我设置了(DataContext).ObjectTrackingEnabled=false。这基本上不跟踪对象,并稍微提高了性能。默认情况下,它设置为true。

3) 如果我在一个程序中使用一个查询超过5次,我会预编译查询,以使事情发生得更快。这种方法有一些注意事项,但在最后使用.ToList()似乎可以帮我解决所有问题:D后续链接:http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html

值得记住的是,每次创建数据上下文时,都会获得最新的数据。例如,你创建了一个数据上下文的类实例,另一个用户更新了一个表,你不会看到它(或者至少我从来没有看到过,但这可能是我做事的方式。请注意):)

示例代码(未测试)

protected void MyFunction()
{
    using(MyDataContext db = new MyDataContext())
    {
         // uncomment the following line for read only queries
         // db.ObjectTrackingEnabled = false;
         // implementation here
    }
}

使用工作单元模式

请参阅本文。