3

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

4

2 回答 2

5

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

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

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

Rick Strahl 的博客上有一篇很棒的文章,它深入介绍了这个主题,远远超过我在这里提供的答案!

于 2008-08-28T21:08:12.470 回答
0

我认为 Jeff Atwood 在Herding Code 播客中谈到了这一点,当时他被问及完全相同的事情。在最后 15-20 分钟左右听它。

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

于 2008-08-28T21:06:32.507 回答