فعال سازی Migration (
+ و
+) بسیار ساده است؛ ولی یکی از
مشکلات رایجی که در زمان اجرای دستور Add-Migration در Entity Framework وجود دارد:
Unable to generate an explicit migration because the following explicit migrations are pending: ...
اولین قدم در برخورد با این مسئله، بررسی جدول MigrationHistory__ در پایگاه داده مورد نظر است تا لیستی از سوابق بهروزرسانیهای پایگاه داده را با استفاده کد زیر مشاهده کرد:
SELECT [MigrationId]
,[ContextKey]
,[Model]
,[ProductVersion]
FROM [dbo].[__MigrationHistory] MigrationId کلید مربوط به این query است و مقدار آن برابر است با نامی است که در زمان استفادهی از Add-Migration وارد شده است.
زمانی این مشکل به وجود میآید (حالت اول) که بعد از اجرای Add-Migration دستور Update-Database را فراخوانی کرده باشید و سپس Add-Migration را دوباره فراخوانی کنید و یا (حالت دوم) وقتی که
namespace کلاس Configuration را تغییر داده باشید؛ چرا که Entity Framework برای انجام تغییرات Migration از دو کلید
MigrationId و
ContextKey استفاده میکند که مقدار ContextKey برابر namespace فایل Configuration است.
برای حالت اول که مشخص است با اجرای دستور Update-Database کار بهروزرسانی پایگاه داده انجام میشود و بعد میتوانید Add-Migration را فراخوانی کنید.
در حالت دوم باید با استفاده از SQL تمامی رکوردهای موجود در جدول MigrationHistory__ را ویرایش کرد؛ با استفاده از کد زیر:
UPDATE [dbo].[__MigrationHistory]
SET [ContextKey] = 'VMT.Data.Migrations.Configuration'
WHERE [ContextKey] = 'MyProject.Migrations.Configuration';
در پایان برای اطمینان از لیست Migrationهای اعمال شده بر روی پایگاه داده مورد نظر، میتوانید از دستور Get-Migrations استفاده کنید.