【发布时间】:2017-08-19 13:45:30
【问题描述】:
我是 ASP.NET Web API 的新手(完全是 API)。我的问题是在 ASP.NET MVC 中是否有类似于 ViewModels 的东西(我猜在 API 中它们不会被称为 ViewModels,即使存在这样的东西),还是我必须使用我的 DataAccess 层中的数据库模型?
【问题讨论】:
标签: asp.net asp.net-web-api asp.net-web-api2
我是 ASP.NET Web API 的新手(完全是 API)。我的问题是在 ASP.NET MVC 中是否有类似于 ViewModels 的东西(我猜在 API 中它们不会被称为 ViewModels,即使存在这样的东西),还是我必须使用我的 DataAccess 层中的数据库模型?
【问题讨论】:
标签: asp.net asp.net-web-api asp.net-web-api2
我的问题是是否有类似于 ViewModels 的东西
是的,它与 MVC 中的相同。名称ViewModels 无关紧要,因为它被许多名称称为DataModel 或Model 或DTO。但本质上它是一个Data Transfer Object (DTO),它没有或保持任何状态。
同样,您应该为相应的实体拥有单独的视图模型;并且应该在模型对象中包含您的数据验证逻辑。这还为您的实际实体添加了一个抽象层,以了解您希望将哪些特定数据传输给您的客户
【讨论】:
ViewModel 实际上只是向用户公开的数据片段的另一个名称。
您当然可以在 WebAPI 中拥有视图模型。您可以从您的 API 方法中返回您喜欢的任何对象。
事实上,我建议专门在 API 场景中返回视图模型,因为您不想同时序列化任何可能附加到数据访问对象的额外属性,尤其是框架生成的属性。为您的 API 响应提供简单的 POCO 可以让您完全控制客户端收到的结果数据。
【讨论】:
您在此处做出的选择取决于您的设计和相对应用程序的复杂性。在域模型和业务模型之间进行映射的开发成本很小。但是,出于以下原因,我确实建议为您的 api 层创建视图模型:
【讨论】: