عند إضافة قاعدة بيانات إلى المشروع ، تذكر انه يمكنك التعديل في البيانات من خلال نافذة Server Explorer (او غيرها من الأدوات في الفيجوال استديو) فقط ، وان اي تعديلات تقوم بها اثناء تشغيل البرنامج ، يمكن ان تفقدها عند تشغيله مرة اخرى.
وسبب هذا ان فيجوال استديو عند تشغيل البرنامج ، يقوم بالتراجع عن التغيرات التي حصلت سابقاً على قاعدة البيانات ويعيدها إلى شكلها الأصلي.
للتوضيح :
1- حمل هذا المثال (VS2008):
2- افتح المشروع وقم بتشغيله (F5)
3- قم بإضافة البيانات إلى الفورم
4- اضغط على زر حفظ
5- اغلق الفورم
6- قم بأي من التالي:
- من القائمة Build اضغط على Rebuild Soultion.
- عدل الكود ( مثلاً اضف سطر جديداً في الفورم) ثم اضغط Build
7- شغل البرنامج مرة اخرى ،ولن تجد السجلات التي قمت بإضافتها سابقاً
ماذا يحدث خلف الكواليس؟
عند عمل Build للمشروع، يقوم فيجوال استديو بنسخ قاعدة البيانات من المجلد الجذر للمشروع إلى مجلد الخرج bin\Debug ، ويتصل البرنامج عند تشغيله بالنسخة ويعمل عليها، لذا فإن اي اضافة او حذف او تحديث تحصل في الأساس على قاعدة البيانات النسخة بدون ان تتأثر قاعدة البيانات الأصل.
وإذا قمنا بعد ذلك بتعديل الكود وطلبنا تشغيل البرنامج مرة اخرى، فإن قاعدة البيانات سوف تنسخ إلى المجلد bin\Debug فوق السابقة التي تحتوي على التعديلات وتظهر البيانات في البرنامج بشكلها الأصلي.
الخاصية Copy to Output Directory لملف قاعدة البيانات:
تحدد هذه الخاصية اللحظة التي يقوم فيها فيجوال استديو بنسخ ملف قاعدة البيانات ، والقيم الممكنة لها كالتالي:
Copy always: (الأعداد الأفتراضي لملفات .mdf و .mdb )
يقوم فيجوال استديو بنسخ ملف قاعدة البيانات إلى المجلد bin دائماً عند عمل build للمشروع.
Copy if newer: (الأعداد الأفتراضي لملفات .sdf)
يقوم فيجوال استديو بنسخ ملف قاعدة البيانات إلى المجلد bin عند عمل build للمشروع لأول مرة، او إذا كانت اجدد (احدث) من قاعدة البيانات في المجلد bin - هنا يستخدم تاريخ التعديل في المقارنة.
ملاحظة: لا يفضل هذا الخيار مع ملفات .mdf و .mdb بسبب ان تاريخ التعديل يمكن ان يتغير لمجرد استعراض قاعدة البيانات في Server Explorer.
Do not copy:
لن يقوم فيجوال استديو بنسخ قاعدة البيانات . وعلينا ان نقوم بهذا بشكل يدوي وفي اللحظة التي نريد ، والمهم ان تكون قاعدة البيانات في المجلد bin عند تشغيل البرنامج.
لمعرفة المزيد ، انظر في هذا الرابط: http://msdn.microsoft.com/en-us/library/ms233817.aspx