دادن پیام در سی شارپ هنگام تکراری بودن داده در دیتابیس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دادن پیام در سی شارپ هنگام تکراری بودن داده در دیتابیس

+1 امتیاز

سلام دوستان و اساتید. 
من با استفاده از entity به بانک وصل می شم و جداول رو استفاده می کنم. از دوستور if not exsist هم برای ذخیره نشدن داده تکراری در sql استفاده می کنم.
اما مشکل اینحاست که نمی دونم چطوری باید وقتی داده تکراریه و ثبت نشد در C#‎ یک پیام به کاربر مبدم.

ممنون میشم کد و توضیح رو برام بذاریم.



موفق باشی

سوال شده اسفند 21, 1392  بوسیله ی rahgozar (امتیاز 224)   18 26 35

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام.

شما قبل از اینکه اقدام به درج رکورد کنید، ابتدا چک کنید که آیا اون رکورد ذخیره شده یا نه. اگر نشده بود که رکورد جدید رو ثبت کنید و اگر هم شده بود که باید به کاربر پیغام مناسب رو نمایش بدید. کد زیر این کار رو برای شما انجام میده :

DBStudentEntities MyDB = new DBStudentEntities();
var q = MyDB.Student.where(p => p.StdID == 200);
if( q.Count() == 0)
  {
     // دستورات درج
  }
else
  {
      MessageBox.Show("این شماره دانشجویی قبلا ثبت شده است");
  }

 

پاسخ داده شده اسفند 21, 1392 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انتخاب شد اسفند 22, 1392 بوسیله ی rahgozar

ممنون واقعا دوست عزیز.

اما من چند تا سوال دارم.

چرا

 var q = MyDB.Student.where(p => p.StdID == 200);

 

مقدار 200 دادین.

یک سوال دیگم هم اینه که 

var q = MyDB.Student.where(p => p.StdID == 200);

به این کد نویسی میگن کوئری نویسی درسته؟؟

 

اما این p=>p.s.stdid  یه این نوع کد نویسی چی می گن؟؟ من باید چی بخونم بفهمم اینا چیه و بتونم بنویسمشون؟

 

اونی که من نوشتم فقط یه مثال بود :
var q = MyDB.Student.where(p => p.StdID == 200
در عبارت زیر حرف p کاملا اختیاری هست. شما می تونی هر عبارت دلخواهی رو قرار بدی.
من فرض کردم که جدولی به نام student داریم و این جدول فیلدی به نام stdID . اون مقدار 200 هم کاملا فرضی هست. شما به جاش مقدار textbox ای که باید شرط رو باهاش چک کنید قرار بدید. مثلا اینطوری :
var q = MyDB.Student.where(p => p.StdID == Convert.ToInt32(TxtStudentID.text
(
این مدلی که من براتون نوشتم اصطلاحا بهش Method Syntax گفته میشه که همراه با عبارات Lambda بکار میره (همون p=> p.stdid ) . روش دیگه روش Query Syntax هست که با کلمه from شروع میشه و به کلمه select یا group ختم میشن.
برای کار کردن با این مفاهیم کافیه یه سری pdf درباره linq و entity framework بخونی.
آقای هومن مهیار یه pdf درباره ef دارند که کتاب خوب و جمع و جوری هستش.(هرچند کامل نیست و کتاب ef آقای بهروز راد به همراه این کتاب مکمل های خوبی برای هم هستن). همچنین یه pdf درباره linq هم آقای "اوژن استوار" دارند که مختصر و مفید هستش.
واقعا ممنون از لطف شما دوست عزیز.
واقعا کمک بزرگی به من کردین/

اما سوال دیگه من اینه که اگه من یکی از این روش ها رو یاد بگیرم کافیه؟؟
چون میگن entityfreamwork جدید تره، اگه اون رو بخونم کافیه؟
یک سوال  دیگه واسم پیش اومد شرمنده.
از این روش هایی که شما نام بردین کدوم بهتر و بهینه تر هستنند؟
ُسلام لطفا داخل پاسخ ها  سوال نپرسین از دیدگاه استفاده کنین . و این که هر سوالتون رو بصورت مجزا  داخل یک تاپیک جداگانه  بپرسید  . ممنون .
آشنایی با linq برای کار کردن با ef خیلی به دردتون خواهد خورد. ولی تمرکزتون رو بر روی ef بذارید.
تا جایی که من مطالعه کردم و خبر دارم اینه که تفاوتی از لحاظ سرعت اجرای کوئری مطرح نیست. ولی نکته ای که وجود داره اینه که query syntax از لحاظ فهم و درک کوئری، ساده تر و روان تر هست ولی نکته ای که وجود داره اینه که همه کوئری ها رو نمیشه با query syntax نوشت (گرچه تعداد مواردی رو که نمیشه نوشت خیلی کمه) و همچنین اینکه در نهایت هر مدلی که کوئری رو بنویسید، تبدیل به Method syntax خواهد شد و بعد اجرا میشه (هر چند اگر در ظاهر شما query syntax نوشته باشید).
...