ورود

View Full Version : ایا Automatic Migration نیاز به Migrate دارد؟



pouria_bayat
شنبه 27 آذر 1395, 18:56 عصر
سلام دوستان وقت بخیر.
یک سوال ذهنمو مشغول کرده اینکه آیا در حالتی که AutomaticMigrationsEnabled = true; و Initialize دیتابیس در حالت MigrateDatabaseToLatestVersion هست نیازی که ما add-migrate بزنیم یا در حقیقت Add-migration فقط برای آشنایی ما از تغییرات جدید هستش و نیازی نیست حتما بعد از هر تغییر Add-migrate بزنیم و در حقیقت به صورت خودکار خود دیتابیس تغییر میکنه.
من همیشه فکر می کردم در زمانی که AutomaticMigrationsEnabled = true باشه ما حتما باید Add-migration رو بزنیم تا بتونیم تغییرات جدید رو روی دیتابیس اعمال کنیم اما بدون add-migration با اجرای VS تغییرات اعمال گردید فقط می خواستم مطمئن باشم و اینکه اصلا خاصیت add-migration چیه ؟

alireza_s_84
شنبه 27 آذر 1395, 20:36 عصر
سلام دوستان وقت بخیر.
یک سوال ذهنمو مشغول کرده اینکه آیا در حالتی که AutomaticMigrationsEnabled = true; و Initialize دیتابیس در حالت MigrateDatabaseToLatestVersion هست نیازی که ما add-migrate بزنیم یا در حقیقت Add-migration فقط برای آشنایی ما از تغییرات جدید هستش و نیازی نیست حتما بعد از هر تغییر Add-migrate بزنیم و در حقیقت به صورت خودکار خود دیتابیس تغییر میکنه.
من همیشه فکر می کردم در زمانی که AutomaticMigrationsEnabled = true باشه ما حتما باید Add-migration رو بزنیم تا بتونیم تغییرات جدید رو روی دیتابیس اعمال کنیم اما بدون add-migration با اجرای VS تغییرات اعمال گردید فقط می خواستم مطمئن باشم و اینکه اصلا خاصیت add-migration چیه ؟
وقتی مایگریشن بطور خودکار باشه با تشخیص هر تغییر در مدلها بطور خودکار پایگاه داده رو بروز میکنه در واقع به جای اجرای دستی دستورات add-migration و update-database اینکار بطور خودکار انجام میشه.
اما توجه داشته باشیم اگه تعداد کلاسهاتون زیاد باشه باعث افت اجرای برنامه میشه و بهتره بطور خودکار استفاده نشه.
اگر در وب سایت از مایگریشن خودکار استفاده کنید از اونجا که در صورتیکه 20 دقیقه درخواستی به سایت نرسه IIS پروسه وب سایت را خاموش میکنه با رسیدن اولین درخواست پروسه مجددا اجرا که دوباره متدهای مربوطه برای چک کردن تغییرات اجرا میشن و این باعث کندی پاسخگویی در همچین مواقعی میشه. واقعا نیازی به استفاده از مایگریشن خودکار نیست بهتره همیشه دستی اینکار صورت بگیره و بعد از پابلیش سایت حتما Database.SetInitializer<DataContext>(null); را تنظیم کنید که دیگه نیازی به چک کردن پایگاه داده نباشه و سرعت اجرا بالا بره.

pouria_bayat
شنبه 27 آذر 1395, 21:29 عصر
بعد از پابلیش سایت حتما Database.SetInitializer<DataContext>(null); را تنظیم کنید که دیگه نیازی به چک کردن پایگاه داده نباشه و سرعت اجرا بالا بره.
جواب سوالم رو گرفتم جامع و خوب توضیح دادید.
ممنون یعنی یکبار به صورت Automatic پابلیش کنیم تغییرات که اعمال شد بر گردونیم به حالت دستی و دوباره پابلیش کنیم درست متوجه شدم؟

alireza_s_84
شنبه 27 آذر 1395, 21:46 عصر
جواب سوالم رو گرفتم جامع و خوب توضیح دادید.
ممنون یعنی یکبار به صورت Automatic پابلیش کنیم تغییرات که اعمال شد بر گردونیم به حالت دستی و دوباره پابلیش کنیم درست متوجه شدم؟

نیازی به این کار نیست، تو همون زمان طراحی میتونید کانکشن استرینگ هاست رو در وب کانفیگ قرار بدین و تمام تغییرات رو بطور دستی اعمال کنید. به جای اینکه پابلیش کنید بعد دوباره برگردی به حالت دستی و کامپایل مجدد و باز آپلود که کار رو سخت میکنه.