国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

擴(kuò)展Exception,增加判斷Exception是否為SQL引用約束異常方法!

2019-11-17 02:27:22
字體:
供稿:網(wǎng)友

擴(kuò)展Exception,增加判斷Exception是否為SQL引用約束異常方法!

在設(shè)計數(shù)據(jù)表時,如果將某些列設(shè)置為關(guān)聯(lián)其它表的外鍵,那么如果對其進(jìn)行增加、修改操作時,其關(guān)聯(lián)表若沒有相匹配的記錄則報錯,或者在對其關(guān)聯(lián)表進(jìn)行刪除時,也會報錯,這就是外鍵約束的作用,當(dāng)然除了外鍵還有許多約束,在此暫不討論,本篇文章主要講的是,如何判斷是否為SQL的引用約束異常,從而能夠更好的將SQL復(fù)雜的報錯轉(zhuǎn)換為用戶能夠明白的友好提示。

擴(kuò)展Exception,增加判斷Exception是否為SQL引用約束異常方法(IsSqlReferenceConstraintException):

public static bool IsSqlReferenceConstraintException(this Exception except)        {            var baseEx = except.GetBaseException();            if (baseEx is SqlException)            {                string message = (baseEx as SqlException).Message;                if (message.ToLower().Contains("reference constraint") || message.ToLower().Contains("foreign key"))                {                    return true;                }                else                {                    return false;                }            }            else if (baseEx != null && !object.ReferenceEquals(except, baseEx))//如果基類不為空且不等于異常本身,則繼續(xù)回調(diào)查找            {                return IsSqlReferenceConstraintException(baseEx);            }            return false;        }

原生的SQL報錯信息如下:

The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.Category_dbo.User_LastEditorID". The conflict occurred in database "mTEM", table "dbo.Category", column 'LastEditorID'.The statement has been terminated.

而采用擴(kuò)展方法則會顯示出我們預(yù)定義的錯誤信息,調(diào)用如下:

public void Remove(int userID)        {            User user=this.repository.Get(t=>t.ID==userID);            if (user != null)            {                try                {                    this.repository.Remove(user, true);                }                catch (Exception ex)                {                    if (ex.IsSqlReferenceConstraintException()) //判斷為引用約束錯誤,則直接拋出我們自定義的錯誤                    {                        throw new Exception("該賬號已有與之相關(guān)聯(lián)的其它業(yè)務(wù)記錄,禁止刪除!若確認(rèn)該賬號停止使用,可將其設(shè)置為禁用即可。");                    }                }            }            else            {                throw new Exception("該賬號信息不存在或已被刪除!");            }        }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 上栗县| 中方县| 大同市| 科技| 平陆县| 扶沟县| 南陵县| 定日县| 沙坪坝区| 肇源县| 呼和浩特市| 正蓝旗| 桃江县| 普安县| 太原市| 靖宇县| 南昌市| 大足县| 瑞昌市| 汉寿县| 盘锦市| 文水县| 得荣县| 高密市| 利辛县| 论坛| 米易县| 镇宁| 重庆市| 清丰县| 南充市| 玛沁县| 甘南县| 兴业县| 顺义区| 阳朔县| 孝昌县| 怀宁县| 弥渡县| 吉安县| 锦州市|