مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

مشکل در migration کردن دیتابیس

چهارشنبه, 21 فروردین 1398 15:15

مشکل در migration کردن دیتابیس

باسلام خدمت بزرگواران .من یک سایت میخوام طراحی کنم که از شیوه CodeFirst برای طراحی دیتابیس استفاده نمودم همچنین برای احرازهویت از سیستم identity2 استفاده کرده ام وجداولم را باهم ارتباط داده ام . دیتابیس بدون هیچ مشکلی  migration  میشود و اگر نیاز به تغییرنیز داشته باشد براحتی میتوان روی دیتابیس  migration  زد ولی وقتی از برنامه اجرا میگیرم پیغام زیر نمایش داده میشود:

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.

 این مشکل را میتوان با حذف جدول dbo_MigrationHistory در دیتابیس حل کرد ولی اگر دوباره نیاز به تغییر در دیتابیس وجود داشته باشد دیگر نمیتوان روی دیتابیس  migration  زد وباید کل دیتابیس رو دوباره حذف کرد واز اول  migration  زد دریک پروژه دیگر هم همین مشکل رو داشتم که باحذف آن جدول ازدیتابیس مشکلم حل شد ولی خب اگرآن جدول را حذف کنم دیگرنمیتوانم درصورت نیازدیتابیسم رو تغییربدم ممنون میشم راهنماییم کنیدبزرگواران.....

پنج شنبه, 22 فروردین 1398 10:02

با سلام

مشکل به وجود اومده به این دلیله که schema مربوط به دیتا بیس شما با migration ها تداخل داره

حذف کردن جدول dbo_MigrationHistory کار درستی نیست چراکه تغییرات دیتابیس ( تاریخچه migratin ) شما رو درون خودش نگه میداره و این کار کاملا اشتباهه

کد زیر رو به Global.asax اضافه کنین :

 Database.SetInitializer<DBContextName>(null);

به جای DBContextName ، نام Context خودتون رو بذارین

دیتا بیس و تمام migration های خودتون رو از پروژه پاک کنین و یه migration جدید بزنین تا database و جدول dbo_MigrationHistory دوباره از اول ساخته بشن

این کار رو تست کنین

اگر نتیجه نگرفتین دوباره مشکل رو با جزییات بیشتر مطرح کنین

موفق باشین :)

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید