我试图弄清楚如何在MVVM(WP7)应用程序中使用Linq2Sql。我想我了解MVVM的基础知识,我使用这种模式编写了一些简单的可测试应用程序,但是我不确定应该如何将其与L2S完美结合。
我不明白几件事。如何管理DataContext?每个应用程序是否都有一个(我还应如何跟踪对实体的更改并将其传播到数据库)?我可以直接绑定(bind)到生成的模型L2S类吗?如何跟踪对数据库所做的更改?还是应该使用存储库模式来设置事件回调集?
另一件事是,为了使VM易于测试,我为应用程序的某些系统使用了依赖项注入(inject)和服务的系统。典型示例是从Internet下载的服务-为了使其可测试,我制作并创建了接口(interface),并提供了两个实现它的类-一个用于生产而另一个用于测试,该类返回虚拟数据。我的问题是,是否也应该对数据库进行访问?假设所有L2S查询仅在此服务内部完成,从而将应用程序的其余部分完全与L2S隔离。还是没有意义,我应该只拥有一个全局DataContext对象/单例并可以从任何地方访问它?
如您所见,我有很多问题:)我很想听听您的意见
最佳答案
我认为您走在正确的道路上,也许遵循存储库模式。如果您对IOC感到满意,请遵循相同的方法。我可能会考虑模拟您的数据接口(interface),但从长远来看,我发现它更容易。
如果您担心数据库上下文行为,那么它本身(例如更新跟踪)就不会...从单元测试的角度来看。这更多的是全面的集成测试(从电话应用程序的角度来看很有趣,但您知道我的意思!)
请记住,您的手机上只有一个用户,请记住这一点。
关于wpf - MVVM Linq2Sql和DataContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9755125/