我的工作我的第一個真正的asp.net web應用程序,我種難倒最好的地方和方法來捕獲並處理數據庫約束違規。假設我對列有一個唯一的約束,並且用戶輸入了違反這個唯一約束的東西。我是否在業務層中通過調用數據庫來檢查該列存在的值,還是讓它一直到數據庫並讓它拋出異常並在我的應用程序中處理該異常?強制數據庫的約束在應用程序代碼
,因爲它是有道理的處理儘可能多的,你可以在業務層到達數據庫之前,我不喜歡後者的答案 - 。但是它也有點問題,因爲我的應用程序是由在所有表上執行基本CRUD操作的過程驅動的。因此,爲了讓我在業務層中實施唯一性,我需要爲每個可能的約束創建一個過程,以便在更新或插入之前查看。這似乎很單調乏味......而且我重複了數據庫和業務層中存在的業務規則,所以如果事情發生變化,不僅需要更改數據庫,還必須更改過程和應用代碼。
那麼,有沒有一個正確的方式或執行應用程序代碼,這些數據庫限制或我應該尋找一種方法來捕獲由數據庫拋出的異常,並在用戶友好的方式呈現出來的好辦法?
感謝您的快速回復。這是有道理的,考慮到我不得不返回到數據庫來檢查唯一性。猜猜接下來要做的是弄清楚如何處理數據庫異常,並以一種用戶友好的方式呈現它們,並且不會向用戶公開太多信息。 – Pmosh
關鍵是接受DBMS(順便說一下,不是「數據庫」)* IS *「業務層」的概念。谷歌爲Toon Koppelaars稱之爲「赫爾辛基宣言」。他有我見過的最好的解釋,爲什麼這是最好的選擇。 –