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

前端之家收集整理的这篇文章主要介绍了asp.net – LINQ to SQL – 你的DataContext在哪里住?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在数据访问对象库中使用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是不明智的。

猜你在找的asp.Net相关文章