DataContext的最佳使用模式

时间:2008-08-28 21:02:16

标签: linq-to-sql .net-3.5

DataContext的最佳生命周期模型是什么?我应该在需要时创建一个新的(也就是函数级别),我应该在每个使用它的类中保留一个(类级别),还是应该创建一个带有静态DataContext的静态类(app-domain)水平)?对此有任何考虑的最佳实践吗?

2 个答案:

答案 0 :(得分:5)

如果您要在以后存储.SubmitChanges()更改的更改,则几乎需要在要执行的操作的整个生命周期内保持相同的数据上下文,否则您将失去这些变化。

如果你只是查询东西,那么可以根据需要创建它们,但是如果以后你想要.SubmitChanges(),你将不得不重新编写代码,所以你也可以采用这种模式从一开始就有效地保持datacontext遍布整个应用程序的全局。

请注意,数据上下文已断开连接。仅当查询数据枚举时才会建立连接(不是在您第一次运行查询时,它是'懒惰'数据类型,因此只在需要时提供数据),然后立即关闭。在.SubmitChanges()上打开连接以提交更改,然后立即关闭。因此,不要认为保持datacontext保持连接打开,它不会(您可以挂钩连接的StateChange事件以确认这一点,这就是我的确定)。

Rick Strahl's Blog上有一篇很棒的文章深入讨论了这个话题,远远超过我在这里提供的答案!!

答案 1 :(得分:0)

我认为杰夫阿特伍德在Herding Code podcast中谈到这一点,当时他被问到完全相同的事情。在最后15-20分钟左右听它。

我认为在SO中,datacontext是在Controller类中创建的。这里不确定很多细节。但这就是它的样子。