الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Insert In LINQ

بدأه D a r K T o u c h في 25 أكتوبر 2010 · 17 رد · 1,545 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ونتابع الحديث عن الـ LINQ , ودرسنا راح يكون عن طريقة الاضافة بأستخدام الـ LINQ طبعا الاضافة سهلة بس تحتاج الى عدة نقاط لابد ان ننتبه لها وان شاء الله راح اتكلم عن هذه النقاط .

قبل ما نبدي عمل الاضافة , لنقم بعمل الجداول التالية للتطبيق بشكل مباشر على قاعدة البيانات

الجدول الاول – Employee

post-224629-006166400 1288013900_thumb.j

الجدول الثاني – Department

post-224629-095878200 1288014036_thumb.j

ملاحظة على الجدولين :

- توجد علاقة بين الجدولين. من جدول الـ Department الى جدول الـ Employee

- انا وضعت بيانات في جدول الـ Department لنكتب مثلها للتأكد ومتابعة المثال بشكل صحيح .

صورة للبيانات

post-224629-094860600 1288014083_thumb.j

لنبدأ علمية الاضافة بـ 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>

طبعا انا ضفت تعديلات للظهور بشكل. ليصبح الشكل النهائي:

post-224629-027476800 1288015054_thumb.j

الان نفتح صفحة الكود الخاصة بالصفحة ونكتب في حدث 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

والنتيجة راح تكون :

post-224629-087540400 1288014248_thumb.j

نأتي الى الاضافة , نعمل دبل كليلك على الزر وراح يفتح لنا صفحة الكود ونكتب فيها :

        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();

في النهاية اتمنى الشرح يكون واضح واهم شي حاولت ايصال الفكرة , واطلب منك عزيزي القارئ التركيز , وان شاء الله ما راح توجد صعوبة

المرفقات
4.JPG5.jpg2.jpg3.JPG1.JPG
1

My Latest

Hello Entity Framework Code First

--------------------

#2

السلام عليكمأخي بس لو تضع روابط الدروس الأولىورقم كل درس

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#3
KV2010 كتب:

السلام عليكمأخي بس لو تضع روابط الدروس الأولىورقم كل درس

السلام عليكم ورحمة الله وبركاتة

اخي الكريم تفضل هذا رابط اول درس

What is LINQ?

وبالنسبة لترقيم المواضيع اخي الدروس عبارة شرح لدوال المستخدمة في الـ LINQ وهي ليست مرتبطة مع بعض ( اقصد الدروس )

بمعنى اخر بعد ما تقرأ الدرس الاول تستطيع اخذ اي موضوع وقراءتة لان عبارة عن شرح لدوال مستخدمة مع الـ LINQ

My Latest

Hello Entity Framework Code First

--------------------

#4

جزاك الله خيراإن شاء الله اكون من المتابعينبالتوفيق

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

#5

الله يعطيك الف عافيه اخوي

عز الله انك ماقصرت وان اشهد انك شخص مبدع

بارك الله فيك اخوي

والى الامام

#6

شكرا على الشرح السهل ... بارك الله لك فى علمك..

#7

السلام عليكم ..

ماشالله الدرس واضح جداً الأسلوب سلس وجميل شكراً جزيلاً لك ..

ولكن لي طلب .. ممكن تشرح هذا السطر ؟

LinqtutorialDataContext db = new LinqtutorialDataContext();

وهل يتطلب انشاء كلاس؟ ام اكتفي بكتابة الكود في اللود بيج؟؟

انتظر ردك ..

تم تعديل هذه المشاركة بواسطة Bint M7D في 31 مارس 2011 في 17:18

#8
Bint M7D كتب:

السلام عليكم ..

ماشالله الدرس واضح جداً الأسلوب سلس وجميل شكراً جزيلاً لك ..

ولكن لي طلب .. ممكن تشرح هذا السطر ؟

LinqtutorialDataContext db = new LinqtutorialDataContext();

وهل يتطلب انشاء كلاس؟ ام اكتفي بكتابة الكود في اللود بيج؟؟

انتظر ردك ..

السلام عليكم ورحمة الله وبركاتة

العفو وهذا من واجبنا ..

بالنسبة للسطر البرمجي, بعد عمل اضافة الى LINQ to SQL classes الى مشروعنا هذا هو عبار عن كلاس ففي هذا السطر شئ مماثل عندما نعمل كلاس ونريد ان نعرفة في عملنا

هذا الشيء الحاصل هنا

لا يتطلب انشاء اي كلاس ولكن وكما ذكرت كيفية التعامل مع الكلاس في كل مره نريد ان نستخدمة نشتق object منه مثل العملية هنا

و ان شاء الله وصلت المعلومة

وشكرا

My Latest

Hello Entity Framework Code First

--------------------

#9

شكراً ع التوضيح و لكن يظهر لدي خطأ في هذا السطر !

inqtutorialDataContext db = new LinqtutorialDataContext();

هل الاسماء هنا ثابته ؟!

تم تعديل هذه المشاركة بواسطة Bint M7D في 31 مارس 2011 في 21:31

#10
Bint M7D كتب:

شكراً ع التوضيح و لكن يظهر لدي خطأ في هذا السطر !

inqtutorialDataContext db = new LinqtutorialDataContext();

هل الاسماء هنا ثابته ؟!

السلام عليكم ورحمة الله وبركاتة

طبعا احنا عندما ننشأ LINQ to SQL classes نعطيه اسم

فأنا في مثالي كتبت الاسم linqtutorialDataContext

فألاسم ليس بثابت بل على حسب كتابتنا للأسم

كمثال بسيط عندما نعمل كلاس ونريد ان نعمل منه object نكتب اسمه مع اسم object المشتق منه وهكذا

بالتوفيق :D

My Latest

Hello Entity Framework Code First

--------------------

#11

حسناً الكود ستتم كتابته داخل البوتون فقط أي اننا حينما نضيف LINQ to SQL classes لن نكتب في داخله أي كود صحيح؟ فقط نأخذ اسمه ؟؟

#12
Bint M7D كتب:

حسناً الكود ستتم كتابته داخل البوتون فقط أي اننا حينما نضيف LINQ to SQL classes لن نكتب في داخله أي كود صحيح؟ فقط نأخذ اسمه ؟؟

السلام عليكم ورحمة الله وبركاتة

نعم, فقط الاسم والمثال يوضح طريقة العمل

وشكرا

My Latest

Hello Entity Framework Code First

--------------------

#13
D a r K T o u c h كتب:

السلام عليكم ورحمة الله وبركاتة

نعم, فقط الاسم والمثال يوضح طريقة العمل

وشكرا

لا زال الايرور موجود :""(

post-236724-083773700 1301601173_thumb.j

المرفقات
linq.jpg
#14

السلام عليكم ورحمة الله وبركاتة

اولا افضل ان يكون هذا الملف في App_Code

وارجو التأكد هل معرف الـ namespace

using System.Linq;

وهل تم سحب الجداول في الـ model

ارجو الرجوع الى هذا الموضوع وقراءة الجزء ما بعد انشاء الجدول وكيفية سحب الجدول فيه

What is LINQ?

ارجو بدأ القراءة من

اقتباس
انا عملت جدول اسمه employee وتوجد به الحقول التالية :

employeeID

employeeName

employeeJob

employeeEmail

وكما ذكرت سابقا اسم LINQ to SQL classes على حسب اختيارنا

good luck

My Latest

Hello Entity Framework Code First

--------------------

#15

شكراً لك .. سأقرأ الموضوع مجدداً ..

ممكن ترفعلي مجلد المشروع ؟! :)

#16

قمت بوضع الملف بداخل App_Code + تأكدت من وجود using System.Linq;

و قمت كذلك بسحب الجدول بداخله ..

ولا زال الخطأ موجوداً :/

post-236724-013849900 1301612791_thumb.j

المرفقات
ااا.jpg
#17

السلام عليكم ورحمة الله وبركاتة

كل شيئ وله حل ان شاء الله

ممكن احصل على هذا المشروع لأرى ماهية المشكلة الموجودة به

My Latest

Hello Entity Framework Code First

--------------------

#18

أختي ربما الحل هو بإضافة هيك للسطر الأول في الكود

 using (FahmnyLinqDataContext Fahmny = new FahmnyLinqDataContext())

تم تعديل هذه المشاركة بواسطة KV2010 في 2 أبريل 2011 في 21:37

الله أكبر الله أكبر الله أكبر لآ إله إلا الله الله أكبر الله أكبر ولله الحمد

مواضيع مشابهة