PDA

View Full Version : سوال: آپدیت نشدن entity framework بعد از اعمال تغییر در بانک اطلاعاتی در اس کیو ال



ehsanrastgoo
چهارشنبه 18 اردیبهشت 1398, 13:02 عصر
با سلام خدمت دوستان
راستش دارم یه پروژه رو مینویسم الان وسط کارم جداول دیتابیسم رو تو sql تغیر میدم بعد از این که مدلم رو تو سی شارپ 2019 آپدیت میکنم و میخام از فیلد های جداولم استفاده کنم فیلد ها رو نمیشناسه
انگار که فقط تو دیزاین مدل تغیراتم رو شناخته وقتی هم برنامه رو ران میکنم از روابطم جدولام خطا میگیره و میگه این روابط و کلید ها لود نشد لطفا اگه ممکنه کمک کنید کچلم کرده
در ضمن بعد از اپدیت ریبیلد هم میکنم

davidrobert
چهارشنبه 18 اردیبهشت 1398, 13:39 عصر
اگه نوع فیلد تغییر بدید دیگه آپدیت کار نمیکنه چون به صورت ویزارد هستش ساخت EF به همین خاطر باید کامل Model که برای ارتباط با دیتابیس توسط EF ساخته پاک کنید و دوباره مدل بسازید و قبل از ساختن دوباره مدل از app.config رشته اتصال پاک کنید که دردسر نسازه چون این یکی از ضعف های EF وقتی نوع فیلد یا ارتباط عوض کنید و تو ویزارد بخواهید آپدیت کنید EF این تغییرات بیشتر موقع متوحه نمیشه و کامل اون Model باید پاک کنید و دوباره دیتابیس بهش بگید ولی قبلش باید رشته اتصال قبلی که داخل app.config هستش پاک کنید که وقتی دوباره ارتباط بهش میدید تا رشته اتصال میسازه که دیگه تکراری رشته اتصال نسازه.

abdullah20
چهارشنبه 18 اردیبهشت 1398, 14:31 عصر
با درود
اگر به هر دلیلی مجبور به اضافه مجدد شدید، نیازی نیست کل مدل را حذف یا تغییری در کانکشن استرینگ بدید
کافیه کلاس مربوط به جدول تغییر یافته را از داخل مدل حذف و راست کلید و ...update را بزنید و از تب اول یعنی Add جدول را مجدد به مدل اضافه و ذخیره کنید.

ehsanrastgoo
چهارشنبه 18 اردیبهشت 1398, 18:42 عصر
دوست عزیز میشه دقیقا توضیح بدید باید چه کارایی رو انجام بدم برا پاک کردن EF و دوباره Add کردن اون البته به طور کلی بلدم ولی قلقهاش و این که جه پیش خواهد آمد رو نمیدونم مثل همین که گفتید تو App.Config باید آدرس رو عوض کنم آخه پروژم مهمه نمیخام که به هم بریزه ممنون میشم

ehsanrastgoo
چهارشنبه 18 اردیبهشت 1398, 18:45 عصر
ببینید هم میخام تغییر بدم هم این که یه جدول دیگه ایجاد کردم ولی همین تغییری که شما میگید هم هنجام دادم ینی تو یکی از جدولام فیلد اضاف کردم و تو کلاس آن به صورت دستی اون رو تغیر دادم ولی موقه اجرا گیر میده

danialafshari
چهارشنبه 18 اردیبهشت 1398, 19:30 عصر
با سلام
در روش DBFirst ابتدا تغییرات رو در Sql Server اعمال کنید
مدل رو باز کنید و در یک فضای باز کلیک راست کنید و Update Model From Database
موفق باشید

ehsanrastgoo
چهارشنبه 18 اردیبهشت 1398, 22:04 عصر
با سلام
در روش DBFirst ابتدا تغییرات رو در Sql Server اعمال کنید
مدل رو باز کنید و در یک فضای باز کلیک راست کنید و Update Model From Database
موفق باشید


با سلام عزیز همین کار رو انجام دادم ولی نمیشد

ehsanrastgoo
چهارشنبه 18 اردیبهشت 1398, 22:05 عصر
اگه نوع فیلد تغییر بدید دیگه آپدیت کار نمیکنه چون به صورت ویزارد هستش ساخت EF به همین خاطر باید کامل Model که برای ارتباط با دیتابیس توسط EF ساخته پاک کنید و دوباره مدل بسازید و قبل از ساختن دوباره مدل از app.config رشته اتصال پاک کنید که دردسر نسازه چون این یکی از ضعف های EF وقتی نوع فیلد یا ارتباط عوض کنید و تو ویزارد بخواهید آپدیت کنید EF این تغییرات بیشتر موقع متوحه نمیشه و کامل اون Model باید پاک کنید و دوباره دیتابیس بهش بگید ولی قبلش باید رشته اتصال قبلی که داخل app.config هستش پاک کنید که وقتی دوباره ارتباط بهش میدید تا رشته اتصال میسازه که دیگه تکراری رشته اتصال نسازه.


بازم سلام دوست عزیز ممنون از راهنمایت همین کار رو انجام دادم درست شد مجبور شدم مدلمو پاک کنم و دوباره بسازم ممنون از راهنماییت

davidrobert
پنج شنبه 19 اردیبهشت 1398, 00:50 صبح
خواهش تغییر دادن نوع فیلد یا ارتباط چون روی یک کلاس نیست و خیلی جاها دیگه باید تغییر کنه چون انجام نمیشه این تغییر بایستی مدل از ریشه پاک و دوباره ساخته بشه که میشه گفت یکی از ایراد های EF دو سال یش سر MVC باهاش برخورد کرده بودم.

ali_md110
پنج شنبه 19 اردیبهشت 1398, 20:07 عصر
بکارگیری EF Designer یا Database First جهت آموزش و آشنایی کاربران تازه کار با EF هست
روش ارجح بکارگیری EF Code First هست که این مشکلات را ندارد