DataContext的最佳使用模式

时间:2020-03-05 18:44:41  来源:igfitidea点击:

什么是DataContext的最佳生命周期模型?我应该在需要时创建一个新类(又称功能级别),还是在每个使用它的类中保持一个可用的新类(类级别),还是应该创建一个带有静态DataContext的静态类(应用程序域)等级)?是否有任何考虑的最佳实践?

解决方案

回答

我想杰夫·阿特伍德(Jeff Atwood)在被质疑完全相同的事情时,在《牧群密码》播客中谈到了这一点。在最后15到20分钟左右收听。

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

回答

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

如果只是查询内容,则可以根据需要创建它们,但是如果以后要使用.SubmitChanges(),则必须大量重构代码,因此我们也可以采用有效的模式从一开始就在整个应用中保持" datacontext"的全局性。

请注意,数据上下文已断开连接。仅在枚举查询数据时才建立连接(不是在第一次运行查询时,而是"惰性"数据类型,因此仅在需要时才提供数据),然后立即关闭。在.SubmitChanges()上,打开连接以提交更改,然后立即关闭。因此,不要以为保持datadatatext会使连接保持打开状态,否则就不会打开(我们可以钩住连接的StateChange事件来自己确认,这就是我确定的方式)。

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