بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
با سلام وخسته نباشید خدمت اساتید محترم
من وب سایتی با تکنولوژی code first ایجاد کردم و روهاست گذاشتم بعد از مدتی میخواستم یکی از جداول دیتابیس رو اصلاح کنم تو VS به راحتی تومحیط کنسول میشه با کد update-database این کار روکرد ولی نمی دونم توی هاست باید چی کارکنم که بدون از دست دادن اطلاعات انجام بشه لطفا کد مربوطه برای db-Context برام بزارید با راهنمایی لازم ، خیلی گیرم قبلا تشکر می کنم
ضمنا EF استفاده شد ورژنش 5 هستش
نقل قول: بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
سلام
شما اگر از Migration استفاده کنید به صورت خودکار مشکلتون حل میشه و نیازی نیست به صورت دستی دستور update-database رو بزنید
این مقاله رو مطالعه کنید
نقل قول: بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
با تشکر از جواب شما
بسیار مقاله مفیدی بود
ولی به یک مطلب اشاره نکرده و اون هم اینکه اگر update-database -force نیاز شد چه کار باید کرد اگه شما اطلاعات کامل دارید لطفا راهنمایی کنید
نقل قول: بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
اجرای دستوری که شما میگی زمانی لازم خواهد بود که پراپرتی ای رو از مدلتون حذف کرده باشین و به طبع اون ستون متناظر در دیتابیس بخواد حذف بشه، در اینصورت EF بهتون ارور میده و میگه دیتابیس رو نمیشه آپدیت کرد، اگه مقاله رو کامل و با دقت خونده باشی به این مساله هم توجه کرده:
نقل قول:
از آنجائیکه حذف یک خاصیت مساوی است با حذف یک ستون در جدول بانک اطلاعاتی، امکان از دست رفتن اطلاعات در این بین بسیار زیاد است. بنابراین ویژگی مهاجرت خودکار دیگر اعمال نخواهد شد و این مورد به نوعی یک محافظت خودکار است که درنظر گرفته شده است.
البته در EF Code first این مساله را نیز میتوان کنترل نمود. به کلاس Configuration اضافه شده توسط پاورشل مراجعه کرده و خاصیت AutomaticMigrationDataLossAllowed را به true تنظیم کنید:
پس دیگه نیازی به دستور update-database -force نخواهد بود
نقل قول: بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
- مهاجرت خودکار در EF Core حذف شده و دلیلش اینه که به طور کلی روش غلط و پر از ایرادیه.
- بهترین راه اینه که همیشه Migration بسازید.
- اگر Force رو در EF6 و ماقلبل بردارید بهتره چون اگر خطایی باشه (حذف اطللاعات) به شما اعلام میکنه.
- ضمن اینکه همیشه ابتدا تغییراتو روی دیتابیس پشتیبان انجام بدید و مطمئن بشید که اطلاعات حذف نشده بعد روی سرور اعمال کنید.