السلام عليكم و رحمة و بركاته ...
- عند إضافة قاعدة بيانات service-based database أو MS Access إلى ملفات المشروع في فيجوال استديو .. و بالنقر عليها يتم عرض محتوياتها في النافذة server Explorer ...
- لكن عند تنفيذ المشروع Run يقوم الفيجوال بنسخ (نسخة من القاعدة) من ملفات المشروع إلى المجلد Debug أو Release (حسب الإعدادات).. كلما قمنا بتعديلات في قاعدة البيانات ..
- هذا يسبب عدة أمور منها :
- ضياع المعلومات التي تم إدخالها أثناء تنفيذ المشروع .. بعد كل عملية Run يسبقها تعديل بسيط في قاعدة البيانات ..
- بقاء المعلومات التي تم إدخالها في القاعدة بعد حذف البيانات منها أثناء التنفيذ ... (أسئلة كثيرة في المنتدى مثل .. عملية الحذف و الإضافة .. لا تعمل .. )
- مطور البرنامج يحتاج إلى البيانات التي أدخلها سابقا .. كي يجرب العمليات الجديدة في البرنامج ... و كذلك لا يريد إضاعة وقته في إدخال البيانات مباشرة في الجدول و خصوصا بظل وجود علاقات Foreign Key (كثيرة !!) .
- لذلك هذه الطريقة تجعل قاعدة البيانات التي نفتحها و نعدل فيها هي نفسها التي يتم استخدامها أثناء التنفيذ .. دون ضياع للمعلومات المدخلة أو عودة البيانات المحذوفة..
- الفكرة بسيطة ... تعتمد على :
- إضافة قاعدة بيانات للمشروع .
- الذهاب لمجلد المشروع و نسخ ملفي القاعدة إلى مجلد مؤقت ..
- حذف القاعدة من المشروع .
- عملية Build للمشروع ... (هذه الخطوة مهمة جدا.. كي لا يحذف الملفات المنسوخة إلى المجلد debug و التي هي ليست من ملفات المشروع)
- نسخ ملفي القاعدة من المجلد المؤقت إلى المجلد Debug .
- إضافة القاعدة كــ Add Link لملفات المشروع .
- تغيير خصائص ملف القاعدة من Copy if new إلىDo Not Copy .
- نقرتين على القاعدة في ملفات المشروع .إنشئ جدول .إضافة DataSet أو Entity Data model أو ..الخ ..و سحب الجداول ..
- تعديل الملف app.config ليشير إلى :
AttachDbFilename=|DataDirectory|\Database1.mdf;
بدلا من :AttachDbFilename=|DataDirectory|\bin\debug\Database1.mdf;
[*] يمكن حفظ المشروع كــ template ...من قائمة file ..Export Template بشرط إغلاق قاعدة البيانات من النافذة Server Explorer .[*]في المرفقات ..ملف فيديو (من نوع Screen2Exe) .. يشرح الموضوع ..[*]لو كانت القاعدة في sql server management studio لما احتجنا كل هذه الخطوات ..