01-11-15, 11:16 PM
السلام عليكم ورحمة الله
أخي سعود
أخي عادل
من خلال إطلاعي على بعض المشاركات إتضح لي أن مسألة المعالج مخيفة لبعض المبرمجين
المقصود بالمعالج هو أن يوفر عليك الوقت والجهد في إنشاء الأكواد التي تتعامل مع متطلبات التعامل مع قاعدة البيانات من حيث الإستعلام والإضافة والتحديث والحذف.
ليزول الغموض...
فلنعمل سوياً مثال بسيط:
في قاعدة بيانات SqlServer
أنشئ جدول بإسم students
وفيه ثلاثة أعمدة فقط وهي
id من نوع int وترقيم تلقائي Identity ومفتاحي PrimaryKey
وعمود باسم name من نوع NVarChar
وعمود باسم bdate من تاريخ فقط Date
الآن أنشئ مشروع جديد
ومن القائمة Project نختار إضافة عنصر جديد Add New Item ونختار LINQ to SQL Classis ونتركه بالإسم الإفتراضي DataClasses1.dbml عندها ستظهر نافذة التصميم الخاصة بها
من نافذة مستكشف الخادم Server Explorer أو مستكشف قاعدة البيانات Database Explorer حسب الإصدار لديك واسحب الجدول واسقطه في نافذة تصميم LINQ to SQL
نذهب للفورم ونظيف له أداة مربع نص TextBox وأداة التاريخ DateTimePicker وأداة زر Button
أضف هذا الكود للفورم ونفذ
ستتفاجئ بالنتيجة، وعند التمعن في الكود ستجده أنه لا يحتاج إلى شرح
ألم تلاحظ في الكود أنه لم يتطرق إلى الإتصال...ههه
عند النظر في كود LINQ to SQL نجد أنه يتعامل مع الأعمدة على أساس أنها عناصر كلاس،
وبهذا فإن أي خطأ سيظهر مباشرة أثناء كتابة الكود وليس عند التنفيذ كما في ADO.NET.
أخوتي..
نحن في عصر السرعة، ومن الحكمة أن نبدأ من حيث انتهى الآخرون.
هذا نفس الكود بالطريقة القديمة ADO.NET
كما نلاحظ الفرق الشاسع بينهم،
وعند المقارنة نجد أن احتمالية الخطأ في LINQ to SQL تكاد تكون معدومة،
في حين أن أي خطأ في حرف واحد في ADO.NET سيعطل البرنامج.
والآن هل نقول وداعاً ADO.NET...
بالمناسبة سيأتي البوم الذي ستقول فيه وداعاً VB.NET...
أخي سعود
أخي عادل
من خلال إطلاعي على بعض المشاركات إتضح لي أن مسألة المعالج مخيفة لبعض المبرمجين
المقصود بالمعالج هو أن يوفر عليك الوقت والجهد في إنشاء الأكواد التي تتعامل مع متطلبات التعامل مع قاعدة البيانات من حيث الإستعلام والإضافة والتحديث والحذف.
ليزول الغموض...
فلنعمل سوياً مثال بسيط:
في قاعدة بيانات SqlServer
أنشئ جدول بإسم students
وفيه ثلاثة أعمدة فقط وهي
id من نوع int وترقيم تلقائي Identity ومفتاحي PrimaryKey
وعمود باسم name من نوع NVarChar
وعمود باسم bdate من تاريخ فقط Date
الآن أنشئ مشروع جديد
ومن القائمة Project نختار إضافة عنصر جديد Add New Item ونختار LINQ to SQL Classis ونتركه بالإسم الإفتراضي DataClasses1.dbml عندها ستظهر نافذة التصميم الخاصة بها
من نافذة مستكشف الخادم Server Explorer أو مستكشف قاعدة البيانات Database Explorer حسب الإصدار لديك واسحب الجدول واسقطه في نافذة تصميم LINQ to SQL
نذهب للفورم ونظيف له أداة مربع نص TextBox وأداة التاريخ DateTimePicker وأداة زر Button
أضف هذا الكود للفورم ونفذ
ستتفاجئ بالنتيجة، وعند التمعن في الكود ستجده أنه لا يحتاج إلى شرح
PHP كود :
Public Class Form1
Dim context As New DataClasses1DataContext
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim std As New student
std.name = TextBox1.Text
std.bdate = DateTimePicker1.Value.Date
context.students.InsertOnSubmit(std)
context.SubmitChanges()
MessageBox.Show("تم تسجيل الطالب برقم: " & std.id)
End Sub
End Class
عند النظر في كود LINQ to SQL نجد أنه يتعامل مع الأعمدة على أساس أنها عناصر كلاس،
وبهذا فإن أي خطأ سيظهر مباشرة أثناء كتابة الكود وليس عند التنفيذ كما في ADO.NET.
أخوتي..
نحن في عصر السرعة، ومن الحكمة أن نبدأ من حيث انتهى الآخرون.
هذا نفس الكود بالطريقة القديمة ADO.NET
PHP كود :
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connection As New SqlClient.SqlConnection(My.Settings.Database1ConnectionString)
Dim query As String = "Insert Into [students]([name], [bdate]) Values(@name, @bdate);" &
"Select @@Identity;"
Dim command As New SqlClient.SqlCommand(query, connection)
command.Parameters.AddWithValue("@name", TextBox1.Text)
command.Parameters.AddWithValue("@bdate", DateTimePicker1.Value.Date)
connection.Open()
Dim result As Integer = command.ExecuteScalar()
connection.Close()
MessageBox.Show("تم تسجيل الطالب برقم: " & result)
End Sub
End Class
كما نلاحظ الفرق الشاسع بينهم،
وعند المقارنة نجد أن احتمالية الخطأ في LINQ to SQL تكاد تكون معدومة،
في حين أن أي خطأ في حرف واحد في ADO.NET سيعطل البرنامج.
والآن هل نقول وداعاً ADO.NET...
بالمناسبة سيأتي البوم الذي ستقول فيه وداعاً VB.NET...