我有一个在POST和PUT都被调用的方法。该方法更新当前用户的用户名。查询看起来像:LINQ查询没有返回正确的结果
public override void Save()
{
if (SessionManager.CurrentSession.Query<User>()
.Any(u => u.Username == this.Username))
throw new DuplicateNameException("Username already exists");
...
也能正常工作的POST每次我尝试创建一个新用户存在一个数据库中的用户名时,它抛出DuplicateNameException。然而,在PUT上,当我尝试将现有的用户名更改为已存在的用户名时,此异常从未受到影响。我不知道为什么查询将不同于POST和PUT。有什么想法吗?提前致谢。
等待,如果您不更改用户名,但用户已经存在,那么'Any'条件将返回'true',因为同一用户的记录与过滤器匹配? –
@JeanHominal为了确保我的理解正确,如果当前用户名是[email protected],那么如果我不更改用户名,并且尝试PUT并发送[email protected],那么执行如果陈述是真实的?是的,是这样。现在这不是最好的用户体验,他们应该在用户使用当前用户名时弹出取消消息,而不是使用他们已有的用户名发送消息。 – Crystal