高效使用 LINQ2SQL

发布于 2024-11-09 05:01:00 字数 492 浏览 0 评论 0原文

我是 LINQ2SQL 的超级粉丝。但我在每个函数中使用了大量 DataContext,并随后使用查询。但是,我知道有更好的方法......

也许像这样?

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

    }

 protected void FunctionA() : FA
        {

        }
 protected void FunctionB() : FA
        {

        }

所以口头禅是,每当你想创建一个DataContext时,继承或调用这个函数FA。但是,当我继承它时,我遇到了错误。似乎是什么问题以及减少 DataContext 一直使用的最佳实践是什么。

建议?

I am a HUGE LINQ2SQL Fan. But I use a lot of DataContext in my each function and subsequent use the queries. However, I know there is a better way to do it...

Something like this, maybe?

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

    }

 protected void FunctionA() : FA
        {

        }
 protected void FunctionB() : FA
        {

        }

So the mantra is that, whenever you want to create a DataContext, inherit or call this function FA. But, I am getting error when I am inheriting it. What seems to be the problem and what is the best practices to reduce the use of DataContext all the time.

Advices?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感性 2024-11-16 05:01:00

我在使用 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
    }
}

There are a few things I do when using L2S that vasty improve things alot.

1) Use the using statement as you have shown in your question. This is the correct way of doing things

2) If I am doing a read only query... I set (DataContext).ObjectTrackingEnabled = false. This basically does not track the objects and improves performance a bit. It is set to true by default.

3) If I use a query more than 5 times in a program, I pre-compile the query to make things happen quicker than they would. There are a few caveats with this approach, but using .ToList() at the end seems to fix them all for me :D Follow up link: http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html

It is worth remembering that every time you create a data context, you are getting the latest data. Example, you create a class instance of a data context, another user updates a table, you will not see it (or at least I never do, but it could be the way im doing things. So be warned). :)

Example Code (Not Tested):

protected void MyFunction()
{
    using(MyDataContext db = new MyDataContext())
    {
         // uncomment the following line for read only queries
         // db.ObjectTrackingEnabled = false;
         // implementation here
    }
}
疯到世界奔溃 2024-11-16 05:01:00

使用工作单元模式

参考这篇文章。

Use Unit of Work pattern

Refer this article.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文