البرمجة

تنفيذ ترحيل Entity Framework Code First بشكل برمجي

في إطار عمل مشروعي يعتمد على Entity Framework Code First، يثير الحاجة إلى استخدام ميزات الترحيل (Migrations) تساؤلات كثيرة. يعد الاعتماد على Package Console Manager لتنفيذ أوامر “Add-Migration” و”Update-Database” أمرًا قد يكون غير ملائم في بعض الحالات. لذا، يأتي السؤال: كيف يمكن تنفيذ هذه الأوامر بشكل برمجي دون الحاجة إلى Package Console Manager؟

أولاً وقبل البدء في تفصيل الإجابة على هذا السؤال، يجب أن نفهم عملية الترحيل في Entity Framework Code First. يقوم الأمر “Add-Migration” بإنشاء ملف ترحيل جديد يحتوي على التغييرات التي تم إجراؤها على قاعدة البيانات. بعد ذلك، يقوم الأمر “Update-Database” بتطبيق هذه التغييرات على قاعدة البيانات الفعلية.

لتنفيذ هذه الأوامر بشكل برمجي، يمكن استخدام مكتبة Entity Framework Command-Line للتفاعل مع Entity Framework من خلال الشفرة. يمكن تحقيق ذلك باستخدام مكتبة Microsoft.EntityFrameworkCore.Design. فيما يلي مثال على كيفية تنفيذ هذه العمليات برمجياً:

csharp
using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.DependencyInjection; class Program { static void Main() { var services = new ServiceCollection(); ConfigureServices(services); using (var serviceProvider = services.BuildServiceProvider()) { var designTimeServices = serviceProvider.GetRequiredService(); var migrationsOperations = designTimeServices.OperationsFactory.Create("YourDbContext"); // Execute Add-Migration programmatically migrationsOperations.ScriptMigration("TestMigration01"); // Execute Update-Database programmatically migrationsOperations.ApplyMigrations(); } } private static void ConfigureServices(IServiceCollection services) { // Configure DbContext and other services here // services.AddDbContext(); // ... // Add Entity Framework Design-Time services services.AddDbContextDesignTimeServices(); } }

في هذا المثال، يتم بناء خدمات الخدمة (ServiceCollection) وتكوينها باستخدام مكتبة Entity Framework Design-Time services. ثم يتم استخدام هذه الخدمات لتنفيذ أوامر “Add-Migration” و”Update-Database” بشكل برمجي.

من الجدير بالذكر أن هذا المثال يتطلب تكوين صحيح لخدمات الخدمة وتكوين السياق (DbContext) الخاص بالتطبيق. يُفضل استبدال “YourDbContext” بالاسم الفعلي للسياق في التطبيق.

المزيد من المعلومات

بالطبع، دعونا نوسع على الموضوع بمزيد من المعلومات حول كيفية استخدام ميزات الترحيل في Entity Framework Code First بشكل برمجي.

أولًا، يجب توفير الإعدادات اللازمة للسياق (DbContext) الخاص بتطبيقك. يمكنك القيام بذلك عبر إعداد الخدمات المطلوبة في طبقة التكوين. على سبيل المثال:

csharp
public class Startup { public void ConfigureServices(IServiceCollection services) { // تكوين DbContext وأضف أي خدمات إضافية هنا services.AddDbContext(options => { options.UseSqlServer("YourConnectionString"); }); // إضافة خدمات Entity Framework Design-Time services.AddDbContextDesignTimeServices(); } }

يُفضل استبدال “YourDbContext” بالاسم الفعلي للسياق الذي تستخدمه في تطبيقك، وكذلك استبدال “YourConnectionString” بسلسلة الاتصال الخاصة بقاعدة البيانات الخاصة بك.

بعد ذلك، يمكنك استخدام الشفرة البرمجية السابقة لتنفيذ أوامر “Add-Migration” و”Update-Database” بشكل برمجي. يتم ذلك عبر إنشاء خدمة الخدمات (ServiceCollection) وتكوينها، ثم استخدامها للحصول على خدمة التشغيل الزمني (IDesignTimeServices) ومن ثم تنفيذ العمليات المطلوبة.

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

زر الذهاب إلى الأعلى