PDA

View Full Version : UpdateException



f.beigirad
جمعه 04 مرداد 1392, 13:15 عصر
با سلام و عرض ادب.

من توی دیتابیسم ، در جدول اشخاص فیلد کد ملی رو Unique قرار دادم.
پس قاعدتا وقتی من بخوام کدملی تکراری وارد کنم باید خطایی رخ بده.

در حال حاضر این خطا رخ میده ولی Exception خاصشو گیر نمیارم.
قسمت اصلی متن خطا اینه :


System.Data.UpdateException was unhandled
HResult=-2146233087
Message=An error occurred while updating the entries. See the inner exception for details.
Source=System.Data.Entity

InnerException: System.Data.SqlClient.SqlException
HResult=-2146232060
Message=Violation of UNIQUE KEY constraint 'UK_Persons'. Cannot insert duplicate key in object 'dbo.Persons'.
The statement has been terminated.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=14
LineNumber=1
Number=2627
Procedure=""
Server=.\SQLEXPRESS
State=1

همونطوری که مشخصه این خطا مربوط به کلاس UpdateException میشه.
من با نوشتن کد زیر میتونم از توقف برنامه جلوگیری کنم(تست کردم) ولی نمیتونم شناسایی کنم چه Exception ی هست.
catch(UpdateException ex)
{

}
در sqlException کلاس Number هست که بتونیم نوع دقیق Exception رو تشخیص بدیم.ولی در UpdateException شماره ی خطایی وجود نداره.


من چطوری میتونم انواع Exception های UpdateException رو تشخیص بدم؟
یک هفته هست که دارم میگردم.ولی مطلب خاصی پیدا نکردم.

شما برای تشخیص این خطاهای دیتابیس چکار میکنید؟

دوستان عزیز خواهشا نگید قبل از درج رکورد ، قابل درج بودن کد ملی مورد نظرو چک کن.
چراکه قابل ثبت بودن کد ملی رو میشه با یه کوئری تشخیص داد ، ولی اگر بخوام رکوردی رو حذف کنم که کلید اصلی داره و این کلید اصلی درجدولهای دیگه به عنوان کلید خارجیه، 100 در 100 برنامه خطا میده و عمل حذف رو انجام نمیده(البته نمیخوام از Cascade استفاده کنما.چون تراکنشهای مالیم حذف میشه).اینو چکار کنم؟؟
نتیجه: باید خطا های دیتابیس رو هندل کنم .
ولی نمیدونم چجوری؟

Hajivandian
جمعه 04 مرداد 1392, 14:26 عصر
سلام،

توسط کد زیر میتونید خطای مربوط به اس کیو ال رو هندل کنید:
catch(Exception ex)
{
SqlException sqlex= ex.InnerException as SqlException;
if(sqlex != null){
// Sql exception
}
else{
// Other exception
}
}