الاخ الفاضل خضر ترزى
عندما استخدم ال dataset هل ال database توضع كلها فى الكاش ام الجداول التى استخدمتها فقط هى التى توضع فى الكاش؟
الاخ الفاضل خضر ترزى
عندما استخدم ال dataset هل ال database توضع كلها فى الكاش ام الجداول التى استخدمتها فقط هى التى توضع فى الكاش؟
ال Dataset لما بتحمل في الذاكرة بتحمل فارغة و بتحتوي على شكل الجدول فقط (بيعتمد على نوع ال dataset) ، الان لما بتستخدم الامر Fill لتملئها بالبيانات فهي سوف تمتلئ ببيانات الجدول كاملة، لذلك يفضل ملئها من StoredProcedure بالبيانات المهمه فقط، و عمليا ال dataset يمكن ان تحتوي على اكثر من جدول مع علاقاتهم.
اذا Dataset واحدة صممت لتحتوي على كل قاعدة البيانات و انت طلبت ملئها بالكامل فسوف تسحب كل قاعدة البيانات اليها، و اذا بنيتها لتحتوي على عدة جداول فقط و سحبت البيانات التي ترغب بها فسوف تحتوي على تلك البيانات فقط؟
بعد الانتهاء من التعامل مع البيانات يمكنك ارجاع التحديثات الى قاعدة البيانات عبر ال Update
ولكن نقطة مهمة، ال dataset بحتوي على كل بيانات الجدول، تاكد اذا كان الجدول كبير ان تحصل على البيانات التي ترغب بها فقط، و يفضل كثيرا اخذها عبر StoredProcedure ، الامر Fill الخاص بال DataAdapter بيحتوي على امكانية اخذ جزء من السجلات الى الذاكرة (عبر الامر نفسه)، ولكنه سوف يطلب كل السجلات عبر الشبكة، لذلك يفضل استخدام ال soterProcedure لتفادي ذلك، بالطبع ال DataAdapter يمكنه الارتباط بال StoredProcedure و الاستفادة منها عبر ال Parameters و الامر fill و update
في .NET 1.2 هناك بعض الخصائص المطورة مثل ال Paging و احتمال ان تضاف امكانية التعامل مع ال timeStamp بصورة الية (مع انه امر معقد) ان حدث ذلك فسوف تصبح الامور اسهل قليلا، ولكن مع ذلك سوف يختلف الامر من مكان الى اخر، فبعض ال Datasets سوف تحتاج الى اوامر SQL معينة و التي لن تتمكن من العمل بال timestamps
انا الان باستخدم ال stored procedures صعبة في البداية لتطبق في كل مكان و خاصة لمن اعتاد بالتعامل مع الجداول مباشرة ولكنها بتصبح اسهل لحظة التعود عليها
ال StoredProcedure انا اعرف انها فقط اسرع من جمل ال select sql العادية
لكن هل عندما استخدمها لا توضع كل الداتا فى الكاش وهل اذا استخدمت فى جمل الselect sql مثلا select fieldName لا يتم اخذ كل الجدول فى الكاش ويتم فقط اخذ هذا الحقل؟
نعم ال Stored Procedure سوف تنفذ من طرف الجهاز المركزي و سوف ترجع الحقل المطلوب فقط، او قطعة البيانات المطلوبة اذا استخدمت الفلترة، يعني اذا طلبت الاسم الاول و الاخير فقط من جدول الموطفين لكل من يبدا اسمهم بحرف ما، فقط هؤلاء سوف يرجعوا الى ال dataset و سوف يخذنوا في الذاكرة.
هذا الموضوع مغلق.