PDA

View Full Version : مشکل با Migration اتوماتیک در ef core



jaykob
سه شنبه 21 اسفند 1397, 08:19 صبح
سلام

من یک پروژه با .net core 2.2 پیاده سازی کردم و add migration کردم و همه چی مرتب هست ولی زمانی Publish می کنم می برم روی سرور به صورت اتوماتیک جداول ساخته نمی شه مثل ef 6 که automatic migration رو true می کردیم هم وجود نداره امکان داره راهنمایی کنید

با تشکر

anubis_ir
سه شنبه 21 اسفند 1397, 12:11 عصر
اينجا چيزي به نام automatic migration وجود خارجي نداره. بعد از دستور add، دستور update هم براي اعمال دستي اين تغييرات هست كه خودت بايد اجراش كني يا اجراي متد context.Database.Migrate در startup هم همين كار رو انجام مي‌ده.

jaykob
سه شنبه 21 اسفند 1397, 12:18 عصر
اينجا چيزي به نام automatic migration وجود خارجي نداره. بعد از دستور add، دستور update هم براي اعمال دستي اين تغييرات هست كه خودت بايد اجراش كني يا اجراي متد context.Database.Migrate در startup هم همين كار رو انجام مي‌ده.

سلام

تشکر از پاسخ شما . من روی Local مشکلی ندارم بحث من سر اعمال تغییرات بعد از آپلود روی هاست هست .
context.Database.Migrate رو کجای startup باید قرار بدم ؟ کار دیگه ای نیاز نیست انجام بدم و فقط همین یک خط کد هست ؟

تشکر از شما

jaykob
سه شنبه 21 اسفند 1397, 18:44 عصر
نکته دیگه ای هم که وجود داره من توی class library فایل startup ندارم این رو باید چکار بکنم ؟

ممنون

hakim22
جمعه 24 اسفند 1397, 17:18 عصر
بحث Automatic Migration از اول ایراد داشت و باعث دردسر های زیادی میشد. به همین دلیل در EF Core پیاده سازی نشده.
اگر از Web Deploy استفاده کنید و Conncetion String رو در تنظیماتش قرار بدید هنگام پابلیش روی سایت خودکار دیتابیس رو هم آپدیت میکنه. در غیر این صورت بهترین راه اینه که یا دیتابیس رو با استفاده از script آپدیت کنید یا اینکه در خط فرمان دستور Update-Database رو اجرا کنید. اگر کانکشن دیتابیس اصلی در پروژه باشه آپدیت انجام میشه و بعد بلافاصله سایت رو آپدیت کنید.

خوبیه Web Deploy اینه که وقتی در حال آپدیت سایت هست سایت رو به حالت Under Construction میبره. ولی اگر دستی انجام میدید باید خودتون فایل offline رو ست کنید.

در مورد استارت آپ همیشه پروژه ای که کار تست رو انجام میده استارت آپ هست. همیشه می توانید مسیر کانکشن رو مستقیم در سازنده ی کلاس قرار بدید.