中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

DDD~我們應(ying)該知道的(de)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 = "用(yong)戶(hu)名")]
        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 = "用(yong)戶名")]
        public string UserName { get; set; }

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

        [DataType(DataType.Password)]
        [Display(Name = "確認密碼")]
        [Compare("Password", ErrorMessage = "密碼(ma)和確認(ren)密碼(ma)不(bu)匹配(pei)。")]
        public string ConfirmPassword { get; set; }
    }
而這些數據如何與數據庫關聯,這會用到了model,即我們的表,對于用戶業務來說,它可以有user_info,user_Extesion,Common_area等model組成,而domain model是將這三張表進行組合,以user_info為主導,其它兩個表于輔助,形式一個整體,而這個
整體我們在DDD里叫它聚合,整理里的標識叫它聚合根,一般是一個Guid碼。
 
posted @ 2013-12-19 16:11  張占嶺  閱讀(6077)  評論(4)    收藏  舉報