我意识到这并不一定适用于MVC,但请耐心等待。
使用实体框架和模型,我已经阅读了几篇关于“最佳实践”的文章,其中一些人声称使用存储库和工作单元更好,其他人声称它是过度的,并且使用linq直接在控制器中使用模型更好等等......
然后我们有了视图模型和延迟加载方法,但是使用linq我们可以使用连接为我们的数据检索添加多个“模型”,以便在我们的控制器或辅助类中直接获取我们需要的东西。
我意识到很多这与MVC的“关注点分离”有关,我们可以创建多个层来按照我们想要的方式将数据映射回来,这很好,但是为了论证我的应用程序运行专门用于MS SQL,没有机会转换到另一种数据库类型,将所有额外的分离层添加回地图数据给我带来任何实际好处?我只是想了解在哪一点上得出结论,这样做更好吗?我知道其中一些可能包括个人喜好,但我正在寻找真实生活场景,我很容易以一种方式总结它比另一种更好。在决定我需要多少个绘图层时我应该问自己什么问题从我的数据库中获取我的数据到我的视图?
答案 0 :(得分:1)
真正的好处之一是当您的模型或UI需要彼此独立地更改时。如果您的视图仅绑定到ViewModel而不是您的实体,那么您可以在一个位置(您的控制器)进行所有映射更改,而不是需要遍历您的实体正在使用的每个视图并在那里进行更改。此外,使用ViewModels,您可以将多个数据源组合到一个对象中。基本上,如果不将它直接绑定到数据库表,则可以更灵活地实现UI。