我目前正在做一个ASP.NET MVC项目。
团队中的一些开发人员希望将自动生成的数据库实体直接绑定到视图。
其他开发人员希望创建定制的ViewModel并将其绑定到视图。
客观地说,这两种方法的优缺点是什么?
(我所说的“数据库实体”指的是对象关系管理框架生成的自动生成的类,例如LINQ to SQL、Entity framework或LLBLGen)。
发布于 2012-06-07 16:39:53
毫无疑问,在你的视图中使用视图模型,并使用像AutoMapper这样的东西来轻松地从实体创建视图模型。
缺点:
时
优点:
发布于 2012-06-07 16:51:59
传统观点认为,您永远不应该在视图中使用原始数据库实体。就像任何规则一样,如果你很了解你的实体并了解后果,它就会被打破,但有非常好的理由不去违反规则,特别是在团队中工作时,以及在未来将由可能不像你一样理解规则或实体的人维护的代码中。主要原因是:
通常,创建和维护ViewModels (即使没有AutoMapper)也不是一种开销,您会发现这是一种更好的整体开发模式。除了最简单的情况(例如,静态数据的查找列表)之外,我都会推荐它。
发布于 2012-06-07 17:00:32
我相信使用视图模型是唯一的方法,所以对象关系管理实体没有优点:)视图模型不仅为视图提供数据,而且还定义视图应该看起来是什么样子(通过定义模板),或者它应该如何验证(通过添加数据注释或实现IDataErrorInfo)。
使用视图模型的:
优势:
entities.
中的值的伪造发布的影响。
DisplayFor或EditorFor帮助器在许多地方重复使用这些模板。使用对象关系管理实体的:
缺点:
Required,但在仅更改基本用户信息时不是必需的。https://stackoverflow.com/questions/10928287
复制相似问题