تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثاني : تقنيات جديدة مع .net 2008
#3
منقول من المنتدى القديم
صاحب الرد أحمد جمال المشرف العام
- تقنية LINQ :

باختصار شديد حولت هذه التقنية العمل على قواعد البيانات إلى برمجة عادية ، حيث يمكنك التعامل مع قواعد البيانات من خلال فئات .net عادية للغاية ، يمكنك معرفة المزيد عن هذه التقنية من خلال هذين الرابطين من المنتدى :
http://vb4arb.com/vb/showthread.php?1224...1#post3540

كمثال سريع يمكن افتراض جملة الاستعلام هذه :
كود :
Select companyname from customers

يتم تنفيذها باستخدام اي طريقة ... ليس هذا ما يعنينا ، ولكن تجد ناتج الاستعلام في RS.Fields("FieldName") حيث تستطيع قراءتها ، لعمل استعلام آخر يمكنك القراءة من جديد ، يمكنك عمل Loop عادية للقراءة ومن ثم البحث في الكائن بالطريقة العادية :
كود :
Do While(Rs.Read
Console.WriteLine Rs.Fields("CompanyName")
Loop
كان هذا هو الاختيار المتاح لك للتعامل مع قواعد البيانات ، أما الآن فقواعد البيانات يتم التعامل معها على شكل Clases لها Members و methods و functions ولها Operators خاصة بها ، لنفترض هذا الأمر من داخل ال .net مباشرة .

كود :
Dim queryResults = From cust In customers _
Select cust.CompanyName

حيث تجد متغير مباشرة تجد فيه نتيجة البحث، ومن مقال الأخ سامر سلو هذه التجربة لكود حقيقي ، في المرحلة الأولى نجد الكود المبرمج من خلال ADO.net عادية للغاية بدون الإعتماد على تقنية LINQ :

كود :
Private Sub GetWorkingDate()
Try
Using Mocon As New SqlConnection(My.Settings.AccountsConnectionString)
Dim MoCmd As New SqlCommand
Dim MoReader As SqlDataReader

MoCmd.CommandText = "SELECT MAX(WorkingDate) As WoDate From WorkingDate"
MoCmd.CommandType = CommandType.Text
MoCmd.Connection = Mocon
MoCmd.Connection.Open()

MoReader = MoCmd.ExecuteReader

If MoReader.HasRows = True Then
While MoReader.Read
If IsDate(MoReader.Item("WoDate")) = True Then
Me.WorkingDateLbl.Text = Format (MoReader.Item("WoDate"), "dd/MM/yyyy")
Else
Me.WorkingDateLbl.Text = Now.ToString ("dd/MM/yyyy")
End If
End While
Else
Me.WorkingDateLbl.Text = Now.ToString("dd/MM/yyyy")
End If
MoCmd.Connection.Close()

SaveWorkingDate()
End Using

Catch ex As Exception
MsgBox(ex.Message)

End Try
End Sub

حيث تجد مجموعة من العمليات التي اجبر على عملها اعتماداً على ضعف امكانيات ال DataReader العادية ، أما مع LINQ فهو يتعامل مباشرة من خلال فئات LINQ ، لذا اصبح الكود بالشكل التالي :

كود :
Private Sub GetWorkingDateLinq()
Try
Dim ads As New AccountsDataSet
Dim Wdta As New WorkingDateTableAdapter
Wdta.ClearBeforeFill = True
Wdta.Fill(ads.WorkingDate)

Dim Wod = Aggregate Wdt In ads.WorkingDate _
Into Mdt = Max(Wdt.WorkingDate)

Me.WorkingDateLbl.Text = Wod.ToString("dd/MM/yyyy")

Catch ex As Exception
Me.WorkingDateLbl.Text = Now.ToString("dd/MM/yyyy")
End Try

Me.SaveWorkingDate()
End Sub

مع الشكر للأخ سامرسلو ...
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
الدرس الثاني : تقنيات جديدة مع .net 2008 - بواسطة oneyemenweb2_mybb_import4801 - 05-10-12, 09:43 PM


التنقل السريع :


يقوم بقرائة الموضوع: