模型验证,数据库约束

本文关键字:约束 数据库 验证 模型 | 更新日期: 2023-09-27 18:02:23

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

Network对象可以有User,但我需要首先在数据库中检查给定的电子邮件不存在或做一些其他检查,所以我的命令将成功执行。添加user是指向数据库中添加全新的user。这样做正确吗?

模型验证,数据库约束

你可以按你现在的方式做,这是可以的。

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

如果你想知道如何使用电子邮件检查,这个问题将对你有所帮助。