MVVM Linq2Sql和DataContext

时间:2012-03-18 00:55:38

标签: wpf silverlight windows-phone-7 linq-to-sql mvvm

我试图了解如何在MVVM(WP7)应用程序中使用Linq2Sql。我想我理解MVVM的基础知识,我用这种模式编写了一些简单的可测试应用程序,但我不确定我应该如何将它与L2S结合起来。

我不明白一些事情。如何管理DataContext?我是否每个应用程序有一个(如何跟踪实体的更改并将它们传播到数据库)?我可以直接绑定到生成的模型L2S类吗?如何跟踪对数据库所做的更改?或者我应该使用存储库模式,哪些事件回调?

另一方面,为了让VM易于测试,我为应用程序的某些系统使用依赖注入和服务系统。典型的例子是从互联网下载的服务 - 使其可测试,我制作和接口以及实现它的两个类 - 一个用于生产,一个用于测试,返回虚拟数据。我的问题是,我是否应该为数据库访问这样做?假设所有L2S查询都只在此服务中完成,从而完全屏蔽了应用程序的其余部分。或者是没有意义的,我应该只有一个全局的DataContext对象/单例并从任何地方访问它?

正如你所看到的,我有很多疑问:)我很想听听你的意见

1 个答案:

答案 0 :(得分:1)

我认为你走在正确的轨道上,也许是遵循存储库模式。如果您对IOC感到满意,请遵循相同的路径。我可能会考虑模拟你的数据接口,但从长远来看,我发现它更容易。

如果您关心数据库上下文行为,那么它自身(例如更新跟踪)不会......不是从单元测试的角度来看。这是一个全面的集成测试(从手机应用程序的角度来看有点有趣,但你知道我的意思!)

请记住,手机上只有一个用户并记住了toomstoning。