模型验证,数据库约束

时间:2015-07-12 18:32:01

标签: c# asp.net-mvc architecture cqrs

我正在尝试为我的项目添加一些架构并丰富我的模型。 我从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; }
}

网络对象可以有用户,但我需要先在数据库中检查给定电子邮件尚不存在或进行其他检查,这样我的命令才能成功执行。 通过添加用户我的意思是将全新的用户添加到数据库。 这样做是否正确?

1 个答案:

答案 0 :(得分:1)

您可以按照现在的方式进行,并且没问题。

另一种选择是在Contoller中进行此验证。然后你应该使用Remote attribute。并将IsEmailUnique(string mail)方法移至Controller

如果您想知道如何通过电子邮件检查来做到这一点 - this question会对您有帮助。