我是.Net的新手,并试图学习东西.我正在尝试开发一个Prism4 WPF应用程序
- Visual Studio CSharp 2010 Express Edition,
- 棱镜v4,
- Unity作为IoC,
- SQL Server CE作为数据存储.
我研究了很多(?)和怕得罪人这个和这个等等,并决定实施MVVM,库和的UnitOfWork模式.这个应用程序将是一个单一用户的桌面应用程序(我:-)
所以,我已经创建了一个包含以下项目的解决方案:
- Shell(应用程序布局和启动逻辑)
- 通用(应用程序基础结构和工作流逻辑)
- BusinessModuleA(Views和ViewModels)
- BusinessModuleA.Model(商业实体 - POCO)
- BusinessModuleA.Data(存储库,数据访问(EF?))
- BusinessModuleB(Views和ViewModels)
- BusinessModuleB.Model(商业实体 - POCO)
- BusinessModuleB.Data(存储库,数据访问(EF?))
我的问题是:
- 哪个项目应该参考哪些项目?
- 如果我在'BusinessModuleX.Data'中实现存储库,这很明显,我应该在哪里定义IRepositories?
- 我应该在哪里定义IUnitOfWork以及我应该在哪里实现UnitOfWork?
- 如果我在ViewModels中使用UnitOfWork和Repositories,这样可以吗?Instict说这是糟糕的设计.
- 如果上面的(4)不好,那么ViewModel应该通过服务层(另一个项目?)获取数据.那么,我们如何跟踪对实体的更改,以便在服务层上调用这些对象上的相关CRUD方法?
- 这是否有任何意义,或者我错过了大局?
好吧,可能是我在第一篇文章中没有明确表达我想要的内容.提出的答案并不多.我仍然在寻找答案,因为虽然@Rachel建议可能对即时要求有效,但我要小心不要把自己画成一个角落.我开发了一个Access Db,我在Office上为个人使用而开发,它已经成功,现在被50多个用户使用并且不断增长.维护和修改访问代码库在开始时相当简单,但随着应用程序的发展,开始崩溃.这就是为什么我选择重写.Net/Wpf/Prism中的所有东西,并希望确保我得到正确的基本设计.
请讨论.
与此同时,我想出了这个......