2015-07-12 78 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会帮助你。