有效地使用LINQ2SQL

时间:2011-05-24 21:07:33

标签: c# linq linq-to-sql

我是一个巨大的LINQ2SQL粉丝。但是我在每个函数中使用了很多DataContext并随后使用了查询。但是,我知道有更好的方法来做到这一点......

这样的事,也许?

 protected dbMYDataContext FA(dbMYDataContext dt)
    {
         using (dt = new dbMYDataContext())
        {
            return dt;
        }

    }

 protected void FunctionA() : FA
        {

        }
 protected void FunctionB() : FA
        {

        }

所以,只要你想创建一个DataContext,继承或调用这个函数FA就可以了。但是,当我继承它时,我会收到错误。似乎是什么问题以及减少DataContext使用的最佳实践是什么。

通知书?

2 个答案:

答案 0 :(得分:1)

在使用L2S时我会做一些事情,这些事情很好地改进了很多东西。

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

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
    }
}

答案 1 :(得分:1)

使用工作单元模式

Refer this article.