loading...
طراحی وب- برنامه نویسی
برنامه نویس بازدید : 36 شنبه 29 تیر 1398 نظرات (0)

 

سلام خدمت کاربران عزیز. در این جلسه قصد داریم به آموزش linq در سی شارپ بپردازیم و نحوه ی نوشتن کدهای SQL با استفاده از LINQ در C# را مورد بررسی قرار دهیم.

دوستان گرامی توجه داشته باشید که این درس بسیار ساده و روان می باشد اما برای درک بهتر مطالب لازم است با مبانی اولیه SQL Server آشنایی کافی داشته باشید.

ابتدا یک پروژه از نوع Console App ایجاد کنید و در آن یک مدل LINQ to SQL Calsses با نام مناسب تولید نمائید.

در مرحله بعدی لازم است یک جدول ساده به مدل اضافه کنید (می توانید از یکی از جدول هایی که در قسمت های قبلی آموزش ایجاد کرده استفاده یا جدول زیر را ایجاد کنید).

 

جدول اصلیجدول اصلی

 

فیلد ID را از نوع کلید اصلی و Indetity قرار دهید.

حالا جدول را به مدل اضافه کنید تا در ادامه با استفاده از چند متد، عملیات CRUD را در LINQ به وسیله ی کدهای SQL پیاده سازی کنیم.

کار را با Select داده ها شروع می کنیم.

Select اطلاعات

ابتدا کدهای زیر را در پروژه ی خود پیاده سازی کنید تا به توضیح آن ها بپردازیم:

همان طور که می دانید انجام عملیات Select به نوعی دارای خروجی است که خروجی آن را می توان اطلاعات جدول در نظر گرفت. در LINQ با استفاده از متد ExecuteQuery می توان انواع عملیات Select را انجام داد.

موس را بر روی این متد برده و ورودی و خروجی آن را با دقت بررسی کنید. خواهید دید که خروجی آن از نوعIEnumerable<> است. ورودی اولیه ی آن نوع داده ی String را که در واقع Query است، مشخص می کند. ورودی دوم آن آرایه ای از Params Object است که در مثال بعدی آن ها بررسی خواهیم کرد.

توجه به این نکته بسیار ضروری است که این متد به صورت Generic تعریف شده است. پس در زمان اسفاده از آن، باید نوع داده ی آن مشخص شود. در این مثال داده های ما از جنس کلاس Contact می باشد.

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

 

خروجی مثال خروجی مثال

 

حال اجازه دهید با تغییر این مثال، با کاربرد ورودی دوم متد ExecuteQuery آشنا شویم. پس کد را به صورت زیر تغییر دهید:

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

کد زیر را در نظر بگیرید:

 

توجه به این نکته بسیار ضروری است که نوع پارامتری که به متد ارسال می شود، باید دقیقا با نوع پارامتر به کار برده شده در جدول یکسان باشد. مثلا در مورد بالا نوع فیلد Name از نوع String است، پس لازم است پارامتر جایگزین {1} از نوع String باشد.

Insert, Update, Delete اطلاعات

دلیل این که هر سه این عملیات را با هم بررسی می کنیم این است که هر سه، به وسیله ی یک متد انجام می شوند و  تعیین کننده ی عملیات، به نوع Query نوشته شده بستگی دارد.

کد زیر را به پروژه ی خود اضافه کنید:

با استفاده از متد ExecuteCommand می توان عمل Insert را پیاده سازی کرد. پارامترهای ورودی این متد دقیقا مانند متدExecuteQuery است اما خروجی آن از نوع int است.

همان طور که می دانید عملیات های Insert و Update و Delete بر خلاف Select دارای نتیجه نیستند و فقط بر روی جدول تغییر ایجاد می کنند. خروجی متد ExecuteCommand فقط نشان دهنده ی موفقیت در انجام عملیات است که در صورت موفق بودن، مقداری مخالف صفر باز می گرداند که در جای مناسب می توان از آن استفاده کرد.

برای دو عمل Update و Delete نیز روال کار به همین صورت خواهد بود. به حالت های زیر توجه کنید:

با استفاده از همان متد ExecuteCommand و نوشتن Query مناسب، به راحتی عمل Delete اطلاعات را انجام دادیم.

به همین صورت عملیات Update را پیاده سازی می کنیم:

 

سوال: آیا می توان از Strode Procedure های نوشته شده در SQL Server به این طریق استفاده کرد؟

 

پاسخ: بله، ابتدا لازم است Strode Procedure نوشته شده را به مدل اضافه کنید که آموزش آن را می توانید در این بخش مطالعه کنید. بعد از آن لازم است با توجه به نوع Procedure، از یکی از متدهای معرفی شده استفاده کنید.

به مثال زیر توجه کنید:

در این مثال من از قبل یک Procedure نوشتم و به مدل اضافه کردم؛ به این صورت که یک عدد به عنوان ID می گیرد و رکورد مشخصی را باز می گرداند. کافی است با استفاده از نام Procedure از آن استفاده کنیم. به نوع ارسال پارامتر به Procedure دقت کنید که کاملا شبیه به اجرای یک Procedure در زبان SQL است – در اینجا هدف من نمایش رکوردی با ID=3 است – برنامه را اجرا و خروجی را مشاهده کنید.

خب دوستان این بخش از آموزش linq در سی شارپ هم به پایان رسید. موفق باشید.

منبع: روکسو
 
ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 346
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 11
  • آی پی دیروز : 17
  • بازدید امروز : 53
  • باردید دیروز : 21
  • گوگل امروز : 2
  • گوگل دیروز : 5
  • بازدید هفته : 127
  • بازدید ماه : 492
  • بازدید سال : 7,001
  • بازدید کلی : 35,236