سؤال

ما هي أفضل طريقة لتوفير الآلاف من الصفوف وبعد القيام بشيء ما ، وتحديثها.

حاليًا ، أستخدم dataTable ، وأملأه ، عند الانتهاء من الإدراج بواسطة

MyDataAdapter.Update(MyDataTable)

بعد إجراء بعض التغيير على myDataBle ، استخدم مرة أخرى طريقة myDataAdapter.update (myDatatable).

يحرر:

أنا آسف لعدم تقديم المزيد من المعلومات.

قد يكون هناك ما يصل إلى 200.000 صف سيتم إنشاؤه من ملف XML. سيتم حفظ صفوف إلى قاعدة البيانات. بعد مما سيكون هناك بعض العملية لكل صف. وسأحتاج إلى تحديث كل صف في قاعدة البيانات.

بدلاً من تحديث الصف حسب الصف ، قررت تحديث DataTable واستخدام نفس DataAdapter لتحديث الصفوف.

هذا هو أفضل ما لدي.

أعتقد أنه قد يكون هناك نهج أكثر ذكاء.

هل كانت مفيدة؟

المحلول

في الرد على تعليقاتك:

و DataAdapter.Update() سوف udate (وإدراج/حذف) الصف حسب الصف. إذا كان لديك تغييرات فردية ، فلا توجد طريقة أسرع حقًا. إذا كان لديك تغييرات منهجية ، مثل SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' أنت أفضل من خلال تشغيل DBCommand ضد قاعدة البيانات.

ولكن ربما يجب أن تقلق بشأن المعاملات ومعالجة الأخطاء قبل الأداء.

نصائح أخرى

إذا فهمت بشكل صحيح ، فأنت تقوم بعمليتين منفصلتين: تحميل صفوف إلى قاعدة بيانات ، ثم تحديث هذه الصفوف.

إذا كانت الصفوف التي تقوم بإدراجها تأتي من مصدر البيانات المدعوم من ADO.NET ، فيمكنك استخدام SQLBulkcopy لإدراج الصفوف على دفعات ، والتي ستكون أكثر كفاءة من استخدام DataTable.

بمجرد أن تكون الصفوف في قاعدة البيانات ، أفترض أنك ستكون أفضل حالًا في تنفيذ SQLCommand لتعديل قيمها.

إذا تمكنت من تقديم المزيد من التفاصيل حول ما-ولماذا-أنت تسأل السؤال ، فربما يمكننا تصميم إجابة بشكل أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top