View Full Version : حرفه ای: بروز رسانی دیتابیس بدون از دست دادن اطلاعات دیتابیس در Code First
EBRAHIMIEKOKDARAGHI
شنبه 14 مهر 1397, 21:52 عصر
با سلام وخسته نباشید خدمت اساتید محترم
من وب سایتی با تکنولوژی code first ایجاد کردم و روهاست گذاشتم بعد از مدتی میخواستم یکی از جداول دیتابیس رو اصلاح کنم تو VS به راحتی تومحیط کنسول میشه با کد update-database این کار روکرد ولی نمی دونم توی هاست باید چی کارکنم که بدون از دست دادن اطلاعات انجام بشه لطفا کد مربوطه برای db-Context برام بزارید با راهنمایی لازم ، خیلی گیرم قبلا تشکر می کنم
ضمنا EF استفاده شد ورژنش 5 هستش
سعید کشاورز
یک شنبه 15 مهر 1397, 09:14 صبح
سلام
شما اگر از Migration استفاده کنید به صورت خودکار مشکلتون حل میشه و نیازی نیست به صورت دستی دستور update-database رو بزنید
این مقاله رو مطالعه کنید (https://www.dotnettips.info/post/834/ef-code-first-4)
EBRAHIMIEKOKDARAGHI
یک شنبه 15 مهر 1397, 10:42 صبح
با تشکر از جواب شما
بسیار مقاله مفیدی بود
ولی به یک مطلب اشاره نکرده و اون هم اینکه اگر update-database -force نیاز شد چه کار باید کرد اگه شما اطلاعات کامل دارید لطفا راهنمایی کنید
mr.sirwan
یک شنبه 15 مهر 1397, 18:54 عصر
اجرای دستوری که شما میگی زمانی لازم خواهد بود که پراپرتی ای رو از مدلتون حذف کرده باشین و به طبع اون ستون متناظر در دیتابیس بخواد حذف بشه، در اینصورت EF بهتون ارور میده و میگه دیتابیس رو نمیشه آپدیت کرد، اگه مقاله رو کامل و با دقت خونده باشی به این مساله هم توجه کرده:
از آنجائیکه حذف یک خاصیت مساوی است با حذف یک ستون در جدول بانک اطلاعاتی، امکان از دست رفتن اطلاعات در این بین بسیار زیاد است. بنابراین ویژگی مهاجرت خودکار دیگر اعمال نخواهد شد و این مورد به نوعی یک محافظت خودکار است که درنظر گرفته شده است.
البته در EF Code first این مساله را نیز میتوان کنترل نمود. به کلاس Configuration اضافه شده توسط پاورشل مراجعه کرده و خاصیت AutomaticMigrationDataLossAllowed را به true تنظیم کنید:
پس دیگه نیازی به دستور update-database -force نخواهد بود
hakim22
دوشنبه 16 مهر 1397, 09:19 صبح
مهاجرت خودکار در EF Core حذف شده و دلیلش اینه که به طور کلی روش غلط و پر از ایرادیه.
بهترین راه اینه که همیشه Migration بسازید.
اگر Force رو در EF6 و ماقلبل بردارید بهتره چون اگر خطایی باشه (حذف اطللاعات) به شما اعلام میکنه.
ضمن اینکه همیشه ابتدا تغییراتو روی دیتابیس پشتیبان انجام بدید و مطمئن بشید که اطلاعات حذف نشده بعد روی سرور اعمال کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.