تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Linq to SQL الدالة Attach
#1
السلام عليكم ورحمة الله وبركاته


ظهرت عندي مشكلة عند محاولة الحذف في احد المشاريع ، وذلك بواسطة دالة DeleteOnSubmit

ودالة SubmitChange - التي قامت برمي استثناء ينص على ضرورة استخدام Attach للTable


المشكلة حليتها لكن احب اعرف ليش استخدامها ضروري ، يعني ماهي فائدتها

بحثت وقرأت انها مفيدة في حالة الn-tire بسبب ان الجدول ينتقل من طبقة الى اخرى،

لكن برنامجي طبقة واحدة وليس n-tire ومع ذلك ظهر الخطأ !!!

هل هناك مشكلة في فهمي ، ارجو التوضيح ..
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام

لم افهم كيف حليتها؟ ارجو وضع الكود لفم ما يجري لاني لم افهم المقصود جيدا

تحياتي
الرد }}}
تم الشكر بواسطة:
#3
(06-06-14, 10:04 AM)Sajad كتب : وعليكم السلام

لم افهم كيف حليتها؟ ارجو وضع الكود لفم ما يجري لاني لم افهم المقصود جيدا

تحياتي

شكرا على ردك يا غالي ..

كان عندي كود لحذف سجل من جدول :-

PHP كود :
dataContext.Forums.DeleteOnSubmit(forum);
                
dataContext.SubmitChanges(); 


لكن ظهر عندي هذا الخطأ

Cannot remove an entity that has not been attached




وكان الحل هو وضع Attach قبل كود الحذف :-


PHP كود :
dataContext.Forums.Attach(forum);
                
dataContext.Forums.DeleteOnSubmit(forum);
                
dataContext.SubmitChanges(); 




الان اريد ان افهم ليش تطلب وضع Attach قبل كود الحذف ؟

رغم اني استعملت Linq2sql في مشروع اخر وكنت احذف بكل سهولة دون استخدام دالة Attach

حتى انت في كتابك ماذكرت هذي الدالة وكنت تحذف بدون Attach


فما هو عمل هذه الدالة بالضبط ؟
الرد }}}
تم الشكر بواسطة:
#4
عرفت السبب ..


السبب بكل بساطة ان واحد من الفريق استخدم كائن للDatacontext في اكثر من كلاس


انا مسوي كلاس باسم Dataprovider ووضعت فيه جميع اكواد العمليات الاربعة CUID

ولكن هو راح عرف Datacontext في ملف Form1.cs وحذف مباشرة منه

نسى انه في كلاس Dataprovider تغلف جميع دوال الحذف والعمليات الاخرى .
الرد }}}
تم الشكر بواسطة: Sajad



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم