كيفية التحقق مما إذا كان الترحيل يحتاج إلى تشغيل أو تشغيل مع مهاجر بطلاقة?

StackOverflow https://stackoverflow.com//questions/22076745

  •  23-12-2019
  •  | 
  •  

سؤال

باستخدام فلونتميغراتور ، هل هناك طريقة لمعرفة ما إذا كانت وظيفة تهاجر () سوف تهاجر بالفعل شيء أو ما إذا كان بالفعل حتى الآن?

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

المحلول

لا توجد طريقة سهلة لمعرفة استخدام واجهة برمجة التطبيقات العامة ما إذا كان MigrateUp الطريقة سوف تفعل شيئا أم لا.

ومع ذلك ، هناك العديد من الطرق "الأخرى" حول هذا الأمر والتي تعتمد على الأجزاء الداخلية للطلاقة:

  • مستمدة من MigrationRunner, ، تجاوز ApplyMigrationUp الطريقة ، التي يتم استدعاؤها في كل مرة يتم فيها تطبيق الترحيل ، وتتبع / تسجيل عمليات الترحيل المطبقة

  • إنشاء مخصص IAnnouncer التنفيذ ، تكوين فلونتميغراتور لاستخدامها من خلال IRunnerContext وفي المذيع الخاص بك Say طريقة التحقق من أن message تحتوي المعلمة على النص "migrated" مما يعني أنه تم تطبيق خطوة الترحيل.

  • انظر إلى عمليات الترحيل المعلقة قبل التشغيل MigrateUp, ، إذا كان يمكنك الحصول على مرجع على MigrationRunner يمكنك:
    MigrationRunner runner = ... // get a reference to the runner
    if (runner.MigrationLoader.LoadMigrations() // get all the migrations
            .Any(pair => !runner.VersionLoader
                                .VersionInfo.HasAppliedMigration(pair.Key)))
            // check which migrations have been applied
    {
         // there are pending migrations, do your logic here
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top