كيفية التحقق مما إذا كان الترحيل يحتاج إلى تشغيل أو تشغيل مع مهاجر بطلاقة?
-
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
}
لا تنتمي إلى StackOverflow