从域模型创建视图模型:MVVM

时间:2017-06-24 12:34:55

标签: c# asp.net-mvc mvvm asp.net-core

我来自java背景。从3周开始编写REST Web服务的编码。我一直在阅读很多关于Web API的MVVM设计模式。每个博客和每个stackoverflow问题都解释了View Model也是一个映射前端/客户端的模型。但是,他们没有谈论将Domain模型与视图模型进行映射。

我试图了解使用视图模型映射域模型。请花时间详细解释。

查看:

示例视图如下所示

{
  "userid":"nvkjnvn",
  "applicationid":"kjcnasdkjcnknc",
  "settingkey":"mykey",
  "settingvalue":"30",
  "setting label":"mylabel",
  "isactive":"yes",
  "updatedon":"2017-06-22"
}

模特课程:

public class Setting
{
    public string settingid { get; set; }
    public string settingkey { get; set; }
    public string settingValue { get; set; }
    public string isActive { get; set; }
    public string updatedOn { get; set; }
}

public class Application
{
    public string app_id { get; set; }
    public string name { get; set; }
    public List<Setting> settings { get; set; }
}

public class UserSetting
{
    public string userid { get; set; }
    public List<Application> applications { get; set; }
}

模型视图:

public class UserSettingModelView
{
   public string UserID{get; set;}
   public string ApplicationID{get; set;}
   public string SettingKey{get; set;}
   public string SettingValue{get; set;}
   public string Group{get; set;}
   public string SettingLabel{get; set;}
   public bool IsActive{get; set;}
   public Date UpdatedOn{get; set;}
}

如何使用域模型映射模型视图。

1 个答案:

答案 0 :(得分:0)

这应该只是将多个域类的属性映射到一个视图模型类。请参阅此问题:Should I transform Entity (Persistent) objects to DTO objects?

在这种情况下,AutoMapper是很棒的工具。您的属性名称不完全匹配,因此您可能需要在AutoMapper中进行大量配置。

其他替代方法是手动映射实例。

userSettingModelView.UserID = userSetting.userid;
userSettingModelView.ApplicationID = application.app_id;
userSettingModelView.SettingKey = ...........
userSettingModelView.SettingValue = ...........
userSettingModelView.Group = ...........
userSettingModelView.SettingLabel = ...........
userSettingModelView.IsActive = ...........
userSettingModelView.UpdatedOn = ...........