در این بخش تکنولوژی LINQ به SQL معرفی شده و روش استفاده از آن در پروژه های فرم ویندوزی سی شارپ (C#.NET) آموزش داده شده است سپس آناتومی دستورات LINQ به SQL با ارائه مثال هایی کاربردی روی بانک اطلاعاتی ارائه شده است.


در بخش دوم انجام عملیات پایه روی بانک اطلاعاتی با استفاده از تکنولوژی LINQ به SQL شامل درج رکورد، حذف رکورد و ویرایش رکورد با اجرای روال های ذخیره شده (Stored Procedures) و نیز اجرای مستقیم دستورات SQL شرح داده شده است. این عملیات برای ساخت برنامه های کاربردی مورد نیاز بوده و این مقاله می تواند بعنوان یک پایه برای یادگیری برنامه نویسی بانک اطلاعاتی C# با استفاده از تکنولوژی لینک استفاده شود.

دریافت پروژه بانک اطلاعاتی با LINQ در سی شارپ

LINQ به SQL یک توسعه دهنده به همراه امکاناتی برای ساخت پرس و جو ها روی یک بانک اطلاعاتی رابطه ای فراهم می کند. این امکانات از طریق یک مدل بانک اطلاعاتی LINQ به SQL و دیتا کانتکس مربوطه ارائه می شود.

 LINQ به SQL

LINQ نام مجموعه ای از الحاقات به چارچوب دات نت است که  پرس و جوی یکپارچه با زبان را امکانپذیر می کند. این پروژه قابلیت های زبان های C# و VB.NET را با افزودن گرامری برای ساخت پرس وجوها توسعه می دهد. و کلاس هایی را برای بهره گیری از نتایج پرس و جو ها در اختیار قرار می دهد. LINQ به SQL امکانی فراهم می کند تا جداول، دیدگاه ها و روال های ذخیره شده را از بانک اطلاعاتی SQL سرور به اشیایی در برنامه نگاشت کنید. علاوه بر این LINQ به SQL ، برنامه نویسان را قادر می سازد تا با استفاده از دستورات به زبانی شبیه SQL در برنامه،  به داده های بانک اطلاعاتی دسترسی پیدا کنند. آن جایگزین ADO.NET نمی شود بلکه امکانات و قابلیت های آنرا افزایش می دهد.

کدنویسان -استفاده از لینک(LINQ) در برنامه نویسی بانک اطلاعاتی در سی شارپ

برای استفاده از LINQ به SQL ، پس از ایجاد پروژه جدید در سی شارپ در پنجره Server Explorer یک اتصال به بانک اطلاعاتی دلخواه ، مطابق زیر ایجاد کنید:

کدنویسان -استفاده از لینک(LINQ) در برنامه نویسی بانک اطلاعاتی در سی شارپ

یک آیتم جدید از نوع LINQ to SQL Classes به پروژه اضافه کنید و نام آنرا DataClasses1 بگذارید.

کدنویسان -استفاده از لینک(LINQ) در برنامه نویسی بانک اطلاعاتی در سی شارپ

با اضافه کردن کلاس های فوق بطور خودکار یک دیتا کانتکست بنام DataClasses1DataContextبه پروژه اضافه می شود که برای اجرای دستورات LINQ به SQL از آن استفاده می کنیم.
Data Context ، نگاشتی از همه نهادها( اساساً جداول) به بانک اطلاعاتی فراهم می کند. با کمک آن است که برنامه کاربردی میتواند بانک اطلاعاتی را پرس و جو کند و تغییراتی روی آن اجرا نماید.
با اضافه کردن DataClasses1 به پروژه ، می توانید جداول نشان داده شده در پنجره Server Explorer و ذیل اتصال اضافه شده در مراحل قبل را یکی یکی به داخل فضای کاری آن درگ کنید. همچنین روال های ذخیره شده برای عملیات درج، حذف و ویرایش را به ستون سمت راست فضای کاری درگ نمائید.

کدنویسان -استفاده از لینک(LINQ) در برنامه نویسی بانک اطلاعاتی در سی شارپ

آناتومی دستورات LINQ به SQL

در این بخش برخی از تکنیک های عمومی مورد استفاده در ساخت دستورات LINQ به SQL را در قالب مثال های مختلف، مورد بحث قرار می دهیم. این مثال ها در قالب یک پروژه ارائه شده است که از بانک اطلاعاتی بنام linq با جداول و روال های ذخیره شده بصورت زیر شده است. این بانک اطلاعاتی در SQL Server 2005 ایجاد شده و به همراه پروژه قابل دریافت است.
جداول:
دانشجویان – Studs
رشته ها – Fields
روال های ذخیره شده:
افزودن دانشجوی جدید – sp_add_stud
حذف دانشجو – sp_delete_stud
ویرایش دانشجو – sp_edit_stud
برگرداندن مشخصات دانشجو براساس شماره دانشجویی – sp_select_stud_bid_sid

کدنویسان -استفاده از لینک(LINQ) در برنامه نویسی بانک اطلاعاتی در سی شارپ

مثال ۱: بازیابی همه سطرهای جدول

public void SimpleQuery()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable()
        select a;

    dataGridView1.DataSource = q;
}

در این مثال یک نمونه از دیتاکانتکست ایجاد شده و سپس یک پرس و جو اجرا شده که همه مقادیر جدول بنام Studs را برگردانده است. و برای نمایش نتیجه از یک دیتاگرید استفاده شده است.
از آنجا تابع GetTable() از دیتاکتکس تمام سطرهای جدول را برمی گرداند، مثال فوق استفاده زیادی ندارد، ولی می تواند روش کار را نشان دهید ، بجای دستورات فوق می توانستیم کد زیر را نیز اجرا کنیم که همان نتیجه قبلی را دارد:

public void SimpleQuery2()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();
    dataGridView1.DataSource = dc.GetTable();
}

مثال ۲: انتخاب سطرهای دارای شرط خاص ( دارای بخش Where )

در این مثال می خواهیم دانشجویانی را که نام آنها با حرف ‘s’ شروع می شود، بازیابی کنیم و نتیجه را در دیتاگرید نمایش دهیم:

public void SimpleQuery2()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable()
        where a.sname.StartsWith("s")
        select a;

    dataGridView1.DataSource = q;
}

نام جدول Studs و ستون نام دانشجویان sname است.

مثال ۳: نمایش لیست دانشجویان با کد رشته مساوی ۲ (fid=2)

public void SimpleQuery3()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable()
        where a.fid == 2
        select a;

    dataGridView1.DataSource = q;
}

مثال۴: نمایش لیست دانشجویان رشته ۲ مرتب شده بر اساس نام

public void SimpleQuery4()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable()
        where a.fid==2
        orderby a.sname ascending
        select a;

    dataGridView1.DataSource = q;
}

مثال ۵: الحاق دو جدول و انتخاب ستون ها از دو جدول

در این مثال جدول رشته ها و جدول دانشجویان با هم الحاق شده و ستون های نام و معدل دانشجو از جدول Studs و ستون نام رشته از جدول Fields انتخاب شده است.

public void SimpleQuery5()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

      var q =
        (from studs in dc.GetTable()
         from fields in dc.GetTable()
         where (studs.fid == fields.fid)
         select new
         {
             studs.sname,studs.avgr,fields.fname
         } );

        dataGridView1.DataSource = q;
}

مثال ۶ : جستجو در نتیجه یک پرس و جو با استفاده از LINQ به اشیاء

در مثال زیر ابتدا یک پرس و جو برای بازیابی همه دانشجویان اجرا شده و سپس روی نتیجه دانشجویانی که معدل بالاتر از ۱۷ دارند جستجو شده اند.

public void SimpleQuery6()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable()
        select a;
    var celevers=(from c in q 
                  where c.avgr>17
    		   select c);
    dataGridView1.DataSource = celevers;
}

دریافت پروژه بانک اطلاعاتی با LINQ در سی شارپ

نمایش قابل چاپ