我应该为每个视图创建ViewModel吗?

问题描述 投票:1回答:2

我是编程新手,也许我的问题很愚蠢,但是我试图正确理解这个概念。在我的小型asp.net core Web应用程序中,我有实体类,例如product,是这些产品的度量单位。我使用实体框架将它们存储在数据库中。我的实体非常简单,我将它们直接传递到视图(将它们从存储库中拉出)。我的导师说,在大型的大型项目中,人们永远不会喜欢这样,这根本不正确,在编写良好的代码中,View层根本不应该了解实体和数据层,它们应该是完全独立的。这是否意味着我应该为每个View创建ViewModel类,即使它们等于我的Entity类也是如此?关于此主题的最佳做法是什么?

c# asp.net
2个回答
3
投票

您绝对不应该。这类全球规则很少适用。

让我们来看看MVVM pattern

[对该模式的批评来自MVVM的创建者John Gossman本人,[12]指出,对于简单的UI操作,实现MVVM的开销是“过分的”。

我认为这回答了您为所有内容创建view model的问题。

如果模型不适合视图或过于复杂,则可以使用ViewModel。

您的指导者的想法(我想)是,您应该始终根据域对象而不是数据库对象来思考。但是,正如您将在任何示例中看到的那样,如果它适合视图,则没有理由不直接使用POCO对象。


0
投票

尽管不是规则,但在许多项目中已作为标准实践。实体对象不会直接传递到您的视图。请参考db。例如,您可能想在视图中隐藏一些属性。在这种情况下,如果定义了一个中间类,例如“数据传输对象”,则客户端将仅对DTO类公开,而对DB类对象不公开。

© www.soinside.com 2019 - 2024. All rights reserved.