ونتابع الحديث عن الـ LINQ , ودرسنا راح يكون عن طريقة الاضافة بأستخدام الـ LINQ طبعا الاضافة سهلة بس تحتاج الى عدة نقاط لابد ان ننتبه لها وان شاء الله راح اتكلم عن هذه النقاط .
قبل ما نبدي عمل الاضافة , لنقم بعمل الجداول التالية للتطبيق بشكل مباشر على قاعدة البيانات
الجدول الاول – Employee
الجدول الثاني – Department
ملاحظة على الجدولين :
- توجد علاقة بين الجدولين. من جدول الـ Department الى جدول الـ Employee
- انا وضعت بيانات في جدول الـ Department لنكتب مثلها للتأكد ومتابعة المثال بشكل صحيح .
صورة للبيانات
لنبدأ علمية الاضافة بـ LINQ
في بداية الامر نعمل صفحة جديدة ونضع فيها مثل الكود المرفق
<table>
<tr>
<td><span style="color:#555; font-size:11px;">Employee Name:</span></td>
<td><asp:TextBox ID="TextBox_EmpName" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td><span style="color:#555; font-size:11px;">Employee Age:</span></td>
<td><asp:TextBox ID="TextBox_EmpAge" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td><span style="color:#555; font-size:11px;">Employee Department:</span></td>
<td>
<asp:DropDownList ID="DropDownList_Department" runat="server"
AppendDataBoundItems="True">
<asp:ListItem Value="">-- select Deparment --</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button ID="Button1" runat="server"
Text="ADD new Employee" onclick="Button1_Click" /></td>
</tr>
</table>
<br /><br />
<asp:Label ID="Label_result" runat="server" ForeColor="#FF3300"></asp:Label>طبعا انا ضفت تعديلات للظهور بشكل. ليصبح الشكل النهائي:
الان نفتح صفحة الكود الخاصة بالصفحة ونكتب في حدث Page_Load
LinqtutorialDataContext db = new LinqtutorialDataContext();
var Department = from c in db.Departments
select new
{
ID = c.DepID,
name = c.DepName
};
DropDownList_Department.DataSource = Department;
DropDownList_Department.DataTextField = "name";
DropDownList_Department.DataValueField = "ID";
DropDownList_Department.DataBind();مثل ما تطرقنا له في الدرس السابق عن Anonymous Types , تم استخدامها في كودنا السابق حيث انا ذكرت في اخر الموضوع اننا نستطيع تعريف Object ويكون هذا الـ Object يرمز الى حقل من حقول الجدول مثل الطريقة استخدمتها في الكود السابق.
لنخرج قليلا عن الكود السابق , نذكر عندما نريد تعبئة DropDownList بأستخدام SqlDatasource عند الربط تظهر لنا نافذة بها ثلاث خيارات الاول يرمز الى اختيار مصدر البيانات والثاني يحدد لك ماهو الحقل الذي تريدة ان يظهر في خيارات الـ DropDownList واخر خيار يشير الى القيمة التي تريدها عند الاختيار ,
ونحن كنا نعمل في الخيار الثاني مثلا نظهر الاسم ووحقل القيمة يأخد قيمة ID للأسم
لنعد الى الكود مره اخرى , ما الذي حدث ؟؟
بكل بساطة عملنا الطريقة التي كنا نعلمها بـ SqlDataSource وبمساعدة Anonymous Types حيث حددنا لها البيانات التي نريد ظهورها في الـ DropDownList تكون الـ name والقيمة تكون ID , ولو نشاهد الصفحة الان راح نلاحظ اسماء الـ Department ظهر في الـ DropDownList
والنتيجة راح تكون :
نأتي الى الاضافة , نعمل دبل كليلك على الزر وراح يفتح لنا صفحة الكود ونكتب فيها :
LinqtutorialDataContext db = new LinqtutorialDataContext();
try
{
Employee addEmp = new Employee();
addEmp.EmpName = TextBox_EmpName.Text;
addEmp.EmpAge = Convert.ToInt32(TextBox_EmpAge.Text);
addEmp.DepID= Convert.ToInt32(DropDownList_Department.SelectedValue);
db.Employees.InsertOnSubmit(addEmp);
db.SubmitChanges();
Label_result.Text = "Add Complete.";
}
catch (Exception)
{
Label_result.Text = "ERROR: maybe you forget to fill some information OR you write some thing wrong !!";
}بكل بساطة طريقة الاضافة في الـ LINQ انك تعرف object من نفس الجدول الذي نحاول الاضافة فيه وبعدها نحدد اسماء الحقول وماهو الـ control الذي بتأخذ منه البيانات
في الكود السابق انا عرف متغير اسمه addEmp وبعدها استخدمت اسمأء الحقول واشرت لها بـ مصدر البيانات وفي حالتي كأنت TextBoxs
واهم جزئ في الاضافة وهو الكود الخاص بالاضافة :
db.Employees.InsertOnSubmit(addEmp);
db.SubmitChanges();في النهاية اتمنى الشرح يكون واضح واهم شي حاولت ايصال الفكرة , واطلب منك عزيزي القارئ التركيز , وان شاء الله ما راح توجد صعوبة
