假設我有一個SQL表,其中一列具有唯一鍵(或其他)約束。在C#中捕獲破損的數據庫約束 - 最佳實踐
然後,我有一個應用程序(讓ASP.NET MVC),允許用戶編輯此列。
當用戶嘗試保存,並且約束被/將被破壞時,我需要向用戶顯示一個用戶友好的錯誤消息。因此,以下哪一種更好?
有應用程序查詢數據庫,以確保限制未破,然後插入/更新行(在兩次查詢結果給DB)
OR
立即嘗試執行插入/更新,並在約束被破壞時捕獲SqlException。我喜歡這個,因爲只有一次去分貝,但是你應該如何提取哪個索引/約束被破壞並且貼上適當的消息? (除了檢查Exception.Message?)
同意 - 特別是因爲您可以在輸入代碼時在前端執行一些ajax類型驗證,從表單提交中保存用戶。 – Paddy 2012-07-19 07:53:23
這不會使你免於做2。事實上,你已經檢查過你的模型在T時刻是否有效,並不意味着當你嘗試實際保存它時,這個模型在T + 1時刻是有效的。結論是,你至少應該做2.如果你想提供更好的用戶反饋,你也可以實現1.使用AJAX或其他。 – 2012-07-19 08:02:00
@Paddy是的,這可能是事實上的方式與用戶溝通有關服務器端應用程序的限制。您不希望在每次擊鍵時拋出異常,特別是如果您的數據具有二級緩存。 – danludwig 2012-07-19 08:02:05