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 내가 DB에 존재하는 이름으로 새 사용자를 만들려고 할 때마다 잘 동작은, 그것은 DuplicateNameException를 던졌습니다 : 같은 쿼리 보인다. 그러나 PUT에서 이미 존재하는 사용자 이름으로 기존 사용자 이름을 변경하려고 시도하면이 예외가 발생하지 않습니다. POST와 PUT간에 쿼리가 다른 이유는 알 수 없습니다. 이견있는 사람? 미리 감사드립니다.
잠깐, 사용자 이름을 변경하지 않았지만 사용자가 이미 존재하면 동일한 사용자의 레코드가 필터와 일치하기 때문에 'Any'조건이 'true'를 반환하지 않습니까? –
@JeanHominal 따라서 현재 사용자 이름이 [email protected] 인 경우 사용자 이름을 변경하지 않고 PUT을 시도하고 [email protected]이 전송되면 올바르게 이해하는지 확인하십시오. 진술서 통치가 사실이라면? 그렇습니다. 가장 좋은 UX가 아닌 지금, 그들은 모달이 현재 사용자 이름으로 팝업하고 이미 가지고있는 것과 동일한 사용자 이름으로 보내지 않을 때 취소해야합니다. – Crystal