Rick Strahl在管理DataContext的一生中有一篇很好的文章:http://www.west-wind.com/weblog/posts/246222.aspx.不幸的是,我不能在最好的方法上弥补我的想法。一个全局的DataContext不工作的原因,他提到,一个线程的DataContext看起来复杂,可能更麻烦,它的价值,一个每个对象的实例似乎很y – – 你失去一些优雅,当你附加DataContext用于创建一个DAO到那个DAO,所以它可以更新或删除以后 – 更不要说,有一些令人不快的鸡和鸡蛋的关系。
有没有人有个人经验,表明一种方法比另一种更好?或者更好,有没有人有第四或第五种方法,我没有看到?在哪里是存储和管理您的DataContext的最佳地点?
解决方法
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是不明智的。