一个DataContext的最佳使用模式是什么?

3

什么是 DataContext 的最佳生命周期模型? 我应该仅在需要时创建一个新的(即函数级别),还是在每个使用它的类中保留一个可用的(类级别),或者我应该创建一个具有静态DataContext的静态类(应用程序域级别)? 是否有任何最佳实践可以考虑?

2个回答

5

如果您想存储稍后要提交的更改,则基本上需要在操作的整个生命周期中保持相同的数据上下文可用,否则您将会丢失这些更改。

如果您只是查询一些内容,则可以根据需要创建它们,但是如果以后您想要 .SubmitChanges(),则必须大量重构代码,因此最好从一开始就采用有效地保持应用程序中的 datacontext 全局的模式。

请注意,数据上下文是断开连接的。仅当枚举查询数据时(不是在首次运行查询时,它是一种“惰性”数据类型,因此仅在需要数据时提供数据),才会建立连接,然后立即关闭。在 .SubmitChanges() 上,打开连接以提交更改,然后立即关闭。因此,请不要认为保留 datacontext 会保持连接处于打开状态,它不会(您可以挂钩连接的 StateChange 事件来自行确认,这就是我确定的方法)。

Rick Strahl的博客上有一篇很棒的文章,深入探讨了这个主题,比我在这里提供的回答要详细得多!


0

我认为Jeff Atwood在Herding Code podcast中谈到了这个问题,当时他被问到了同样的事情。建议你听一下最后15-20分钟的内容。

我认为在SO中,datacontext是在Controller类中创建的。关于很多细节我不太确定,但是看起来是这样的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接