سفارش تبلیغ
صبا ویژن

پای سیب


 
فناوری LINQ

( برگرفته شده از  Language-INtegrated Query   )

 

 

  

 

 


LINQ چیست ؟
با این که فناوری LINQ در پائیز سال 2005 مطرح گردید ولی فرآیند پیاده سازی آن از سال 2003 آغاز شده بود . هدف از ابداع فناوری فوق، ارائه تسهیلات لازم برای پیاده کنندگان جهت کار با داده در بانک های اطلاعاتی  SQL و XML عنوان شده است. در واقع ، وجود یک حلقه گمشده بین داده رابطه ای ( بانک های اطلاعاتی )  ، اسناد XML با زبان های برنامه نویسی ، ضرورت ابداع فناوری فوق را توجیه کرده بود . پیاده کنندگان مجبور بودند  برای کار با هر یک از منابع داده ، از روش های مختلفی استفاده نمایند . LINQ  را می توان به منزله حلقه ای گمشده  بین دنیای داده و زبان های برنامه نویسی همه منظوره  تصور کرد . با استفاده از  LINQ  امکان دستیابی به داده صرفنظر از نوع داده  ، با روشی مشابه و یکسان فراهم می گردد . 
پیاده کنندگان نرم افزار در زمان نوشتن برنامه های خود معمولا" از دو زبان مختلف جهت رسیدن به یک هدف مشترک استفاده می نمایند . ما برای نوشتن کدها از یک زبان برنامه نویسی نظیر VB.NET و یا #C و برای  گفتگو با سیستم بانک اطلاعاتی از یک زبان دیگر نظیر SQL استفاده می کنیم .

 

LINQ یک فناوری قدرتمند در زمان کار با داده است که دستاوردهای متعددی را برای پیاده کنندگان به ارمغان آورده است :

  • روشی ساده جهت نوشتن query
  • تسریع در پیاده سازی نرم افزار با توجه به حذف خطاهای زمان اجراء
  • امکان استفاده از امکاناتی نظیر اشکال زدائی و IntelliSence در زمان پیاده سازی
  • حذف خلاء موجود بین داده رابطه ای و پیاده سازی شی گراء
  • استفاده از یک گرامر یکسان جهت نوشتن query صرفنظر از نوع منبع داده
  • افزایش بازدهی و راندمان برنامه نویسی ، چراکه برنامه نویسان از یک رویکرد یکسان برای نوشتن query  و بهنگام سازی داده از طریق زبان برنامه نویسی   استفاده خواهند کرد . 



شکل 1 : عملکرد فناوری LINQ

 

 

مثال برای درک بهتر تمام دوستان مخصوصا پیام نوری های گل: 
برای آشنایی اولیه با  قابلیت های LINQ  ، بد نیست بدون این که بخواهیم وارد جزئیات شویم یک مثال کاربردی را با یکدیگر دنبال نمائیم .
در این مثال با استفاده از LINQ و با یک روش مشابه به منابع داده مختلفی متصل شده و پس از بازیابی داده ، آنها را در یک ListBox جداگانه نمایش می دهیم . 
منابع داده عبارتند از :

  • فولدرهای موجود در یک درایو
  • پردازه های در حال اجراء در ویندور
  • یک بانک اطلاعاتی رابطه ای SQL
  • عناصر موجود در یک آرایه
  • یک فایل XML
  • یک فایل متن
<%@ Page   Language="VB" uiCulture="fa-IR" Culture="fa-IR" %>
<%
@ Import Namespace="System.Diagnostics" %>
<%
@ Import NameSpace="System.IO" %>
<%
@ Import NameSpace="System.Linq" %>
<%
@ Import NameSpace="System.Data.Linq" %>
<%
@ Import NameSpace="System.Data.Linq.Mapping" %>
<%
@ Import NameSpace="System.XML.Linq" %>
<%
@ Import NameSpace="System.Collections" %>

< ="server">
"====================================================================

کلاس ایجاد شده بر اساس داده موجود در بانک اطلاعاتی Contact برای جدول Persons
LINQ to SQL Class

"Persons")> _
Public Class
Person
  
"Int not null")> _
   Public ID As
Integer
   "nvarchar(50) not null")> _
   Public Name As
String
   "nvarchar(50) not null")> _
   Public Email As
String
End
Class
"==================================================================== 
Protected Sub Page_Load(ByVal sender As , ByVal e As System.EventArgs)

بازیابی فولدرهای موجود در درایو C

Dim DI As DirectoryInfo = New DirectoryInfo("C:\\")
Dim dirQuery = From dir In DI.GetDirectories() Order By

               (dir.Name)
Select dir.Name
For Each item In
dirQuery
    ListBox1.Items.Add(item)
Next
item
"====================================================================

بازیابی پردازه های در حال اجرا در ویندور

Dim procQuery = From proc In Process.GetProcesses() Order By proc.Id   _
                            Descending
Select proc.Id, proc.ProcessName
For Each item In procQuery
   ListBox2.Items.Add(item.Id &
" "
& item.ProcessName)
Next
item
"=====================================================================

بازیابی داده موجود در جدول Persons بانک اطلاعاتی Conatct

Dim context As DataContext = New DataContext("Data Source=SRCO-1\SQLEXPRESS;
                                                                        Initial Catalog=Contact;Integrated Security=true"
)
Dim contact1 As Table(Of Person) = context.GetTable(Of
Person)()
Dim query = From c In contact1 Select
c.Name, c.Email
For Each item In
query
     ListBox3.Items.Add(item.Name &
" " & " ==== ? "
& item.Email)
Next
item
"=======================================================================

بازیابی عناصر یک آرایه

Dim firstnames As String() = {"سخا روش", "سایت شرکت سخا روش", "سایت مقالات به زبان فارسی", "سری مقالات ", "ایران", "تهران"}  
Dim val As IEnumerable(Of String) = From fn In firstnames _
                                   
Where (fn.StartsWith("س"
)) _
                                   
Select
fn
For Each name As String In
val
     ListBox4.Items.Add(name)
Next
name
"========================================================================

بازیابی داده ذخیره شده در یک فایل XML با نام Cities.xml

Dim XDoc As XDocument = XDocument.Load(MapPath("Cities.xml"))
Dim query1 = From c In XDoc.Descendants("City"
) _
             Order By c.Element("Name"
).Value _
             Select c.Element("Name"
).Value
For Each item In
query1
    ListBox5.Items.Add(item)
Next
item
"======================================================================
 
 

بازیابی داده از یک فایل متن با نام Maghalat.csv

Dim query2 = From line In File.ReadAllLines(MapPath("Maghalat.csv")) _
            
Where Not line.StartsWith("#"
) _
            
Let parts = line.Split(","
) _
            
Select
Title = parts(0), Publisher = parts(1)
For Each item In
query2
    ListBox6.Items.Add(item.Title &
" "
& item.Publisher)
Next
item

End Sub

>
"=======================================================================

<html xmlns="http://www.w3.org/1999/xhtml">
<
head
="server">
  <
title> مثال شماره یک 
title>
head
>
<
body
>
  <
form id="form1"
="server">
    <
div
>
      <
asp:ListBox ID="ListBox1"
="server">asp:ListBox>
      <
asp:ListBox ID="ListBox2"
="server">asp:ListBox>
      <
asp:ListBox ID="ListBox3"
="server">asp:ListBox>
      <
asp:ListBox ID="ListBox4"
="server">asp:ListBox>
      <
asp:ListBox ID="ListBox5"
="server">asp:ListBox>
      <
asp:ListBox ID="ListBox6"
="server">asp:ListBox>
   div
>
  form
>
body
>
html>
 

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

 دستیابی به منابع داده مختلف با استفاده از فناوری LINQ

شکل  2  : دستیابی به منابع داده مختلف با استفاده از فناوری LINQ


 

 


نوشته شده در پنج شنبه 88/10/24ساعت 11:16 عصر توسط امیرحسین فرمد نظرات ( ) |



Design By : P I C H A K . N E T

















>