我对这个应用程序的设计持怀疑态度......
这是我的应用程序的图表
这是对的吗?我需要改变一些事情......
我将详细说明图表....:
Common Library:它包含类ErrorCodes,Utility Classes等
记录器:记录框架
异常处理:处理异常的框架
视图:包含:用户控件,Windows,弹出窗口等视图的所有不同XAML
ViewModel:包含差异视图的ViewModel。
模型:包含保存不同的层,如...业务层,数据访问层等
实体层:包含像员工,公司等实体对象......
文件框:它指定从文件/数据库读取/写入....
答案 0 :(得分:2)
很难说出你要对你的问题做些什么,但在我看来MVVM层应该是这样的:
模型:原始数据和原始数据验证。也许是INotifyPropertyChanged
,但没有别的
ViewModel :业务逻辑,数据访问,基于业务规则的高级验证等
观看次数:漂亮的UI图层,允许用户与ViewModel进行交互。没别了。
例如,Model可能具有File
属性,但它不应负责显示文件对话框,将文件保存到数据库或验证文件是否具有.pdf扩展名。那种东西是ViewModel的工作。
修改强>
我看到您对问题所做的更新。这是一个好的开始,但这是我遇到的问题:
您的模型应该是原始数据对象。它们不应包含任何比验证属性长度更高级的东西。
老实说,我不建议将Views,Models和ViewModels分成3个单独的层。我曾经这样做过,结果证明这是一场维护噩梦。现在我把所有相关的对象放在一起。例如,我将FileModel
,FileViewModel
和FileView
放在一起,SearchModel
,SearchViewModel
和SearchView
放在一起
我会创建一个数据访问层,负责向/从数据库执行所有读/写数据(我想这可能是你的“实体层”)。
对于小型项目,我倾向于使用我的实体对象作为我的模型,因此模型成为我的DAL层的一部分,虽然我知道不建议这样做。
不要忘记,使用MVVM,您的ViewModel是您的应用程序,而不是您的视图。 View应反映ViewModel中的内容,反之亦然。