加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – LINQ to SQL – 你的DataContext在哪里住?

发布时间:2020-12-15 19:01:23 所属栏目:asp.Net 来源:网络整理
导读:我在数据访问对象库中使用LINQ to SQL。该库在Web(Web应用程序/ Web服务)和非Web(Windows服务)上下文中使用。最初,我将DataContext存储在当前的HttpContext中,因为它允许我管理一个相当小的工作单元(一个Web请求),并避免了Web应用程序中的全局对象。显然
我在数据访问对象库中使用LINQ to SQL。该库在Web(Web应用程序/ Web服务)和非Web(Windows服务)上下文中使用。最初,我将DataContext存储在当前的HttpContext中,因为它允许我管理一个相当小的工作单元(一个Web请求),并避免了Web应用程序中的全局对象。显然,这在Windows服务中不起作用。

Rick Strahl在管理DataContext的一生中有一篇很好的文章:http://www.west-wind.com/weblog/posts/246222.aspx.不幸的是,我不能在最好的方法上弥补我的想法。一个全局的DataContext不工作的原因,他提到,一个线程的DataContext看起来复杂,可能更麻烦,它的价值,一个每个对象的实例似乎很y – – 你失去一些优雅,当你附加DataContext用于创建一个DAO到那个DAO,所以它可以更新或删除以后 – 更不要说,有一些令人不快的鸡和鸡蛋的关系。

有没有人有个人经验,表明一种方法比另一种更好?或者更好,有没有人有第四或第五种方法,我没有看到?在哪里是存储和管理您的DataContext的最佳地点?

解决方法

MSDN documentation on the DataContext class的指南是我建议如下:

In general,a DataContext instance is
designed to last for one “unit of
work” however your application defines
that term. A DataContext is
lightweight and is not expensive to
create. A typical LINQ to SQL
application creates DataContext
instances at method scope or as a
member of short-lived classes that
represent a logical set of related
database operations.

因为DataContext是IDisposable,我发现最容易在一个方法中的using语句中创建和使用DataContext,所以它可以正确处理。

还要注意“任何实例成员不能保证是线程安全的”,所以在多个线程之间共享一个DataContext是不明智的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读