我正在尝试为我的项目添加一些架构并丰富我的模型。 我从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; }
}
网络对象可以有用户,但我需要先在数据库中检查给定电子邮件尚不存在或进行其他检查,这样我的命令才能成功执行。 通过添加用户我的意思是将全新的用户添加到数据库。 这样做是否正确?
答案 0 :(得分:1)
您可以按照现在的方式进行,并且没问题。
另一种选择是在Contoller
中进行此验证。然后你应该使用Remote attribute。并将IsEmailUnique(string mail)
方法移至Controller
。
如果您想知道如何通过电子邮件检查来做到这一点 - this question会对您有帮助。