PDA

View Full Version : چک کردن کلید اصلی تکراری در entity framework



negar.rafie
سه شنبه 25 خرداد 1395, 10:57 صبح
سلام
وقتی با ado کار میکردیم با کد زیر از ثبت رکورد تکراری جلوگیری میکردیم

try
{

}
catch (SqlException ex)
{
switch (ex.Number)
{
case 2627:
MessageBox.Show("اين کد قبلا ثبت شده است");
break;
}

}


حالا در entity framework ب چ شکل هستش
ایا نمیشه از این روش استفاده کرد و باید قبل از درج بررسی کنیم که ایا رکوردی با این نام قبلا ثبت شده

ژیار رحیمی
سه شنبه 25 خرداد 1395, 14:52 عصر
using (var context = new EF6CodeFirstContext())
{
if(context.Students.Find(Searchid)!=null)
MessageBox.Show("اين کد قبلا ثبت شده است");
}

negar.rafie
سه شنبه 25 خرداد 1395, 15:48 عصر
ممنون
ولی من مشکلم این نیست و این مورد را میدونم
سوالم اینه ک راهی به غیر اینکه قبل از درج کردن رکورد بیایم چک کنیم وجود داره یا نداره نیست
مثل کدی ک بالا گذاشتم

ژیار رحیمی
سه شنبه 25 خرداد 1395, 16:17 عصر
برای رکوردهای تکراری اصولا به جز Id (که کلید یکتایی برای رکورد در جدول هست)پراپرتی (هایی) دیگه ای رو هم مد نظر میگیرند(برای یکتایی بودن موجودیت) صرفا Id (هم بعنوان کلید یکتای رکورد در جدول و هم کلید یکتای موجودیت رو در نظر گرفتن کار اصولی نمیباشد)رو جستجو کردن ملاک درستی نیست.مثلا برای موجودیتی مثل دانشجو که دارای Id برای سطرهای جدول هست کد دانشجویی(کد یکتایی برای موجودیت دانشجو) هم بعنوان کلید در نظر میگرند.برای اشخاص کد ملی و .. شما هم بستگی به موجودیتی که داری صفت دیگه ایی رو بعنوان کلید یکتا موجودیت درنظر بگیر.وجواب سوال شما راهش بوسیله کد پست قبلی نه برای Id رکورد برای کلید موجودیت به آسانی میشه فهمید که مثلا کد ملی تکراری هست یا نه

negar.rafie
سه شنبه 25 خرداد 1395, 23:14 عصر
من هم منظورم id نیست
همون شماره دانشجویی ک شما میگید خب
مثلا ی جدول داریم برای اطلاعات دانشجو ک فیلدهای شماره دانشجویی،نام،فامیلی و . . . را داراست
حالا وقتی میخوایم رکورد اضافه کنیم حتما باید اول چک کنیم ک شماره دانشجویی قبلا ثبت نشده است مثل کدی ک شما نوشتید
یا نه مثل بلاکی ک من گذاشتم میشه این کار را کرد

aslan
سه شنبه 25 خرداد 1395, 23:57 عصر
http://blog.wassupy.com/2012/10/catching-unique-key-constraint.html
https://codedump.io/share/h0Y8YjdoR8eT/1/handle-exceptions-in-entity-framework-4

negar.rafie
چهارشنبه 26 خرداد 1395, 20:58 عصر
http://blog.wassupy.com/2012/10/catching-unique-key-constraint.html
https://codedump.io/share/h0Y8YjdoR8eT/1/handle-exceptions-in-entity-framework-4

لینک دوم شد ولی دیگه وقتی مقدار را عوض کردم بازم میگه تکراریه
لینک اول که اصلا نشد

فکر نکنم سوالم اینقدر سخت باشه

negar.rafie
پنج شنبه 27 خرداد 1395, 11:15 صبح
اصلا ادم وقتی میاد اینجا سوال مطرح میکنه از برنامه نویسی سیر میشه
ممنون از همه

Mahmoud.Afrad
پنج شنبه 27 خرداد 1395, 12:56 عصر
کد قرار بدید.....

pbm_soy
جمعه 28 خرداد 1395, 01:49 صبح
دوست عزیز آیا شما یک جستجوی ساده براساس فیلدهای دیگر را میتوانید انجام دهید؟
منظورم یک تکست باکس داشته باشیم کاربر شماره دانشجویی را وارد کند و بعد گزینه جستجو را بزند در صورت وجود اطلاعات آنرا نمایش دهد ودرغیراینصورت پیام مناسب نمایش دهد
اگر همچین کاری را انجام میدهید میتوانید همان را قبل از دستورات درج رکورد بنویسید ودر بخشی که رکورد را پیدا کرده بجای نمایش اطلاعات آن رکورد از زیروال بیرون بیاید مانند return ویا اگه بیسیک کار میکنید exit sub یا exit function وحتی بخش در غیراینصورت هم نیاز نخواهید داشت!

negar.rafie
جمعه 28 خرداد 1395, 11:35 صبح
بله ولی خواستم از بلاک try cach استفاده کنم
مشکل البته حل شد با لینکی که جناب aslan قرار دادند
یکم تغییر دادم کدها را حل شد
ممنون