2015-07-12 80 views
0

我試圖添加一些架構到我的項目和豐富我的模型。 我從CQS開始(類似於那個:CQS-Sample),這是我的第一個問題。模型驗證,數據庫約束

比方說,我有兩個類這樣的下面:

public class Network 
{ 
    public int Id { get; set; } 
    public User User { get; set; } 
    private IQueryFactory _queryFactory { get; set; } 

    public Network(IQueryFactory queryFactory) 
    { 
     _queryFactory = queryFactory; 
    } 

    public void AddUser(User user) 
    { 
     if(this.User == null && user != null) 
     { 
      userHasUniqueEmail(user); 
      this.User = user; 
     } 

    } 

    private void userHasUniqueEmail(User user) 
    { 
     bool isUnique = _queryFactory.ResolveQuery<INewUserUniqueQuery>().Execute(user.Email); 
     if (!isUnique) 
     { 
      throw new ArgumentException("E-mail is not unique"); 
     } 
    } 
} 

public class User 
{ 
    public int Id { get; set; } 
    public string Email { get; set; } 
} 

網絡對象可以有用戶,但我需要先檢查數據庫中給出的電子郵件已不存在,或做一些其他的checkings ,所以我的命令將被成功執行。 通過添加用戶我的意思是將全新的用戶添加到數據庫。 這樣做是否正確?

回答

1

你可以像現在這樣做,這是可以的。

另一種選擇是在Contoller中進行此驗證。那麼你應該使用Remote attribute。並將您的IsEmailUnique(string mail)方法移至Controller

如果你想知道如何使用電子郵件檢查 - this question會幫助你。