我有一個在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