القائمة الرئيسية

الصفحات

عمل Migration عن طريق Nuget Package Mamager Console

 

السلام عليكم ورحمة الله وبركاته

تكلمنا في الدرس السابق عمل Migration عن طريق Database Initializer عن عمل Migration عن طريق Database Initializer سنتكلم في درس اليوم عمل Migration من البداية ويدويا عن طريق Nuget - Package Mamager Console
ولا ننسى 3 شروط اللزمة الواجب توافرها لبناء Migration ولا ننسى أيضا ان الطريقة تعمل مع Asp.Net Mvc ونستخدم مجلد Models لأنشاء  Classes
  

ننشئ مشروع جديد باسم MigrationsEf ثم ننشئ مجلد جديد باسم EntitiesModels

ننشئ داخل المجلد Class جديد باسم TbProducts والذى يمثل الجدول في قاعدة البيانات 


كالدرس السابق ننشئ 3 Property داخل Class بكتابة كلمة Prop إختصار لكلمة Property ليكون كالاتى


    public class TbProduct
    {
        public int Id { get; set; }
        public string ProductName { get; set; }
        public decimal? ProductPrice { get; set; }
    }
 

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

سوف نتكلم عمل Custom لـ Properties في درس منفصل وشرح DataAnnotations



ننشئ Class جديد باسم MigrationsDbContext وهو يحتوى على أسماء الجداول و بعض خصائص الجداول مثل العلاقات وأيضا نص الاتصال بين قاعدة البيانات و التطبيق عن طريق EitityFramework
ونجعله أيضا public ، هذا الـ Class سيرث من : DbContext وهى مكتبة من ضمن System.Data.Entity
طبعا لنا خطأ يخبرنا بأنه لا يتعرف على هذا الكود ولحل هذه المشكلة من لوحة المفاتيح نضغط على .+ Ctrl فتظهر لنا قائمة بها خياران بالاسفل مثل الصورة

الأول لتثبيت EitityFramework والثانى لـ Core سنتكلم عنه بدروس آخرى منفصلة
نختار الأول .. نجد به خياران إضافيين أيضا
الأول للبحث عن آخر إصدار من EitityFramework وتثبيه تلقائيا
والثانى لفتح Package Mamager للتثبيت أيضا أو تثبيت أي اصدار مختلف أو أي إضافات أخرى نريدها
الخيار الأول هنا يحل المشكلة ، لكن سنختار الثانى لتعلم كيف تعمل هذه النافذة

نجد هنا بالصورة 4 خطوات لأتمام هذه العملية

  1. نختار التبويب Browse
  2. نكتب إسم الإضافة للبحث عنها و تثبيتها ، تظهر لنا بإسفل خانة البحث نتائج البحث المقترحة .. نختار أول نتيجة بحث
  3. نقوم بالتعليم على اسم المشروع المراد تثبيت الإضافة عليه حيث انه يمكن أن يكون لدينا أكثر من مشروع داخل Solution واحد
  4. نضغط Install ونتتظهر حتى ينتهى التثبيت هكذا تم تثبيت EitityFramework بنجاح .

يمكن التثبيت أيضا بطريقة آخرى عن طريق Package Mamager Console فقط نكتب هذا الامر


Pm> Install-Package EntityFramework -Version 6.4.4

حيث ان 6.4.4 هو آخر اصدار في وقت كتابة درسنا هذا ويمكنك مراجعة الاصدرات من هنا
https://www.nuget.org/packages/EntityFramework/

لتثبيت أخر اصدار من Console أكتفى فقط بهذا الامر Install-Package EntityFramework

الان نكتب كود Constructor داخل الـ Class ،، نكتب كلمة Ctor ثم نضغط من لوحة المفاتيح على Tab مرتين سريعا 


ثم نضيف له الكود الذى يشير لنص الاتصال بقاعدة البيانات مثل الصورة


يوجد هنا إسم معرف الاتصال بقاعدة البيانات DbConnString والاسم هنا اختيارى ممكن تغيره وهو موجود داخل connectionStrings الموجود داخل ملف App.config أو Web.config حسب تطبيقك .

ثم نعرف الجدول كـ Property مثل الصورة


الان نذهب لملف App.config أو Web.config حسب تطبيقك وفى السطر قبل الأخير فوق Tag </configuration> نكتب كود connectionStrings كالاتى


   <connectionStrings>
<add name="DbConnString" connectionString="data source=.\SQLEXPRESS;initial catalog=MigrationsEFdb;
integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>

هنا نغير فقط أسم السيرفر بجهازك و إسم قاعدة البيانات ، هنا قمنا بتسميتها MigrationsEFdb وعلينا التأكد ان إسم قاعدة البانات غير مكرر داخل سيرفر SSMS


إلى هنا انهينا كل الاعدادات اللازمة لعمل Migration سنبدأ الان التنفيذ

مثل الدرس السابق نفتح Package Mamager Console ونقوم بتفعيل الـ Migrations لكن بهذا الامر

نكتب الامر التالى لتفعيل Migrations في المشروع


Enable-Migrations
 

ننتظر حتى ينتهى وبعدها سنجد انه أنشئ مجلد داخل المشروع باسم Migration

بعد التفعيل على المشروع نضيف الامر التالى لأنشاء قاعدة البيانات والجداول


Add-Migration CreatingDatabase
 

هنا كلمة CreatingDatabase أسم يعبر عن عملية انشاء قاعدة البيانات ويمكن تغيره لأى اسم آخر ، هذا الامر يقوم بعمل التغيرات فقط على Classes التي بنشأها الـ Migration ولا يتم أي تغيرات على قاعدة البيانات ولعمل ذلك نستخدم الامر التالى


Update-Database
 

ننتظهر حتى ينتهى ثم نذهب لـ SSMS لنرى انه تم إنشاء قاعدة البيانات بالجدول بنجاح

يمكنك استخدام الامر Update-Database  -Verbose لمشاهدة انشاء الـ Script لقاعدة البيانات أو الجداول في شاشة Console

واذا استعرضنا الجدول الموجود قاعدة البيانات سنجد به العملية التي قمنا بها بهذا الجدول __MigrationHistory واى عملية Migration آخرى ستجدها أضيفت بهذا الجدول أيضا .

في حالة اذا كان عندنا اى تعديل آخر على قاعدة البيانات سيكون بنفس الطريقة انشاء Class And Property مثل ما تعلمنا سابقا ثم من نافذة Package Mamager Console نكتب الامر Add-Migration CmdName ونغير CmdName لأى إسم يعبر عن هذه العملية لكى ينشئ Migration Class الخاص بها
ثم نكتب الامر Update-Database لنقل التعديل هذا لقاعدة البيانات .


تعليقات