DDD~我們應該知道的Model,DomainModel和ViewModel


 

回到目錄

圖在前

目前項目中可能出現的三種Model模式,對於我們現在開發的一個項目,我覺得使用DDD的思想來設計模型比較清晰,使用DDD的思想把模型model分成了如下三種:
下面是我微博中的截圖:
上面的圖中把模型分成了ViewModel,它與頁面相關,DomainModel,它與業務模塊相關,Model,它與數據庫相關,它是對數據表的一種映射,一般用XML來表示。

文字說明在后

下面我們來舉個例子,用認識一下這三個模型:
下面以用戶業務為例,來講一個這三種模型

UserDomainModel

public class UserDomainModel
    {
        [Required]
        [Display(Name = "用戶名")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "電子郵件地址")]
        public string Email { get; set; }

        public int UserID { get; set; }

        public Common_Area Common_Area{get;set;}

        public User_Extension User_Extension{get;set;}
     }

 

而對於用戶業務它又有注冊,登陸,這需要不同的view來呈現,這時需要ViewModel

LoginModelRegisterModel

public class LoginModel
    {
        [Required]
        [Display(Name = "用戶名")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密碼")]
        public string Password { get; set; }

        [Display(Name = "記住我?")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Required]
        [Display(Name = "用戶名")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "{0} 必須至少包含 {2} 個字符。", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "密碼")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "確認密碼")]
        [Compare("Password", ErrorMessage = "密碼和確認密碼不匹配。")]
        public string ConfirmPassword { get; set; }
    }
而這些數據如何與數據庫關聯,這會用到了model,即我們的表,對於用戶業務來說,它可以有user_info,user_Extesion,Common_area等model組成,而domain model是將這三張表進行組合,以user_info為主導,其它兩個表於輔助,形式一個整體,而這個
整體我們在DDD里叫它聚合,整理里的標識叫它聚合根,一般是一個Guid碼。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM