【问题标题】:Model validation, database constraints模型验证、数据库约束
【发布时间】:2015-09-30 23:56:10
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    你可以按照你现在的方式去做,没关系。

    另一种选择是在Contoller 中进行此验证。那么你应该使用Remote attribute。并将您的 IsEmailUnique(string mail) 方法移动到 Controller

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

    【讨论】:

      猜你喜欢
      • 2013-05-21
      • 2017-03-24
      • 2012-10-04
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多