2016-02-26 68 views
0

我想提出一個MVC5應用程序,使用EF6.5和MSSQL顯示。在特定的視圖中,我想用員工信息保存一個頁面,而我已經可以成功地完成這個頁面。但是,員工的用戶名(顯然)有一個唯一的限制。自定義錯誤MVC5

在我目前的情況下,如果用戶嘗試將他們的用戶名更改爲已經存在的應用程序中的用戶名剛投用的輸入違反數據庫約束信息異常。

因爲我不太熟悉所有這些web開發語言,所以我想問問是否有簡單的方法來檢查提交視圖時用戶名是否已存在,最重要的是向員工顯示錯誤必須選擇一個不同的用戶名,最好不要發回給控制器,但如果這必須發生,那就這樣吧。

在此先感謝,我倒要看看你的意見和/或解決方案。

回答

0

您通常不應允許用戶更改他們的用戶名,部分是出於這個原因。如果可能的話,它應該是一項管理任務。如果你正在談論顯示名稱(或者一個給定的名字,一個「現實生活」的名字),那麼它應該是可以改變的,但是可能沒有UNIQUE約束。沒有什麼能阻止你的公司僱用兩個同名的人。

這就是說,如果你想要讓別人來改變上有唯一約束的領域,你應該提供某種接口來檢查所需的名稱是可用的。這可能是EF使用自定義的SQL程序,如:

CREATE FUNCTION fn_CheckEmployeeName 
(
    @empName VARCHAR(100) -- match this to the data type of the column 
) 
RETURNS BIT 
AS 
BEGIN 
    IF EXISTS(SELECT 1 FROM EmployeeTable WHERE UserName = @empName) 
     RETURN 1; 
    RETURN 0; 
END 

這是好的,如果你有很多客戶(不一定是使用實體框架)和EF應該能夠掛接到這個功能。它也應該比檢查EF中的內部集合更安全,這可能在給定時刻不同步。此功能也可用於其他帳戶創建目的。

你的界面應該有一些線路實際上是試圖更新數據庫之前調用此函數 - 也許一個按鈕,也許當字段失去焦點,somethign這樣。