لینک (زبان برنامهنویسی)
LINQ (لینک) مختصر کلمه Language Integrated Query بوده و یک زبان برای تقاضا از هر گونه مجموعه داده (بانک اطلاعاتی( Data base) ، آرایهها، Xml و…) میباشد. این زبان بسیار شبیه زبان SQL بوده و با زبانهای C# و Vb.NET قابل پیادهسازی است.
طراحی شده توسط | مایکروسافت |
---|---|
توسعهدهنده | مایکروسافت |
Strongly typed | |
وبگاه | |
پیادهسازیهای بزرگ | |
زبانهای برنامهنویسی در فناوری داتنت (سی شارپ، اف شارپ، ویژوال بیسیک داتنت) | |
متأثر از | |
اسکیوال، هسکل (زبان برنامهنویسی) |
هدف اصلی خلق LINQ ارائه یک زبان یکتا جهت تقاضا، برنامهریزی و فیلتر کردن اطلاعات ذخیره شده در اشیاء مختلف اعم از پایگاه داده، اشیا، آرایهها و از همه مهتر XML است، این زبان قابلیت Debug شدن به صورت Runtime را دارست و بسیار قابل انعطاف است.
LINQ TO SQL
این سیستم اجازه گرفتن گزارشهای مختلف از بانک اطلااتی SQL SERVER را به LINQ به خوبی SQL Server Compact میدهد. زمانی که اطلاعات بانک SQL SERVER در سرورهای Remote(راه دور) ذخیره شده باشندو به خاطر این که موتور جستجو برای این کار استفاده شدهاست، LINQ TO SQL از موتور داخلی LINQ استفاده نمیکند در عوض گزارش ساخته شده توسظ LINQ را به SQL تبدیل کرده و آن را موتور SQL SERVER ارجاع میدهد. اگر چه از زمانی که بانک اطلاعاتی SQL SERVER اطلاعات خود را به صورت (Relational Data)یا اطلاعات مرتبط ذخیرهسازی میکند و LINQ از اطلاعات کپسوله شده در Objectها، این دو سیستم بایستی به یکدیکر متصل شوند. به همین دلیل LINQ TO SQL یک چهارچوب اتصال (Mapping Framework) را تعریف میکند. این چهارچوب به وسیله کلاسهایی انجام میشود که با جدولی همانند خود در بانک اطلاعاتی ارتباط دارند؛ این کلاسها شامل کلیه یا تعدادی از ستونهای جدول مابازای خود در بانک اطلاعاتی را به صورت Data Member دارا میباشند.
این تطابق از طریق خواص مدلهای ارتباطی (relational model attributes) مانند primary keys با استفاده از Attributeهای تعریف شده در LINQ TO SQL ایجاد میگردد. برای مثال:
[Table(Name="Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public int CustID;
[Column]
public string CustName;
}
همانطور که مشاهده میکنید، کلاس فوق از جدولی مابازای خود به نام Customers در بانک اطلاعاتی ترسیم شدهاست و درهمین باب Fieldهای تعریف شده دو ستون جدول مورد نظر را بیان میکنند. توجه داشته باشید قبل از این که ما بتوانیم از LINQ TO SQL استفاده کنیم بایستی کلاسهای مابازای جداول بانک اطلاعاتی را تعریف کرده باشیم. در Visual Studio ۲۰۰۸ محیطی برای سهولت در طراحی و پیادهسازی این کلاسها تحت عنوان mapping designer موجود میباشد که میتوان به راحتی تمامی جداول بانک اطلاعاتی مورد نظر را پیاه سازی نمود. البته این سیستم در صورت اتصال به بانک مورد نظر به صورت خود کار عملیاتهای ساخت کلاسها و فیلدها با Attributeهای آنها و ایجاد ارتباطات میان کلاسها را انجام میدهد که به صورت دستی قابل تغییر میباشد. این نگاشت یا پیادهسازی جداول به صورت کلاس را DataContext بر عهده دارد. DataContext رشته اتصال به بانک یا هرگونه اتصال که از IDbConnection ارث بری کرده باشد را گرفته و از آن جهت تولید گزارشات و تولید کلاس از نوع جدول مرتبط (Table<T>) با آن استفاده مینماید.