آموزش ASP.NET Core MVCآموزش طراحی سایت

آپدیت دیتابیس در روش Code First

چگونه در روش کدفرست دیتابیس پروژه را آپدیت کنم ؟ در آپدیت دیتابیس به روش CodeFirst مشکل دارم چطوری میتونم مشکل خودم را حل کنم؟

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

آموزش بروزرسانی Database در روش کدفرست در EF Core

فرض کنید که دیتابیس خودتان را به روش CodeFirst ساختید و حالا قصد دارید که یکی از جداول این دیتابیس را آپدیت کنید به عنوان مثال من می‌خواهم به جدول Students که در جلسه‌ی  آموزش ساخت دیتابیس به روش کدفرست با هم ساختیم یک ستون دیگر به نام کدملی اضافه کنم خب چطوری می توانم اینکار را انجام دهم ؟ خیلی ساده است فقط کافیه که یک migration جدید اضافه کنید و بعد با دستور update-database دیتابیس خودتان را آپدیت کنید.

پس Domain Class مربوط به موجودیت دانشجو را به صورت زیر تغییر می‌دهیم (برای اضافه شدن ستون کدملی یک پراپرتی جدید به نام NationalCode به این کلاس اضافه کردم.)

 public class Student
    {
        public string StudentId { get; set; }
        public string NationalCode { get; set; }
        public string Name { get; set; }
        public string Family { get; set; }
        public DateTime BirthDate { get; set; }
    }

خب حالا باید یک migration جدید اضافه کنیم برای این منظور دستور add-migration را در پنجره Package Manager Console وارد نموده سپس یک نام برای ماگریشن قرار دهید من نام این ماگریشن را Update_StudentsDB_AddColumn_NationalCode قرار میدهم شما می‌توانید از نام های کوتاه تری برای نام گذاری migration استفاده کنید ولی به این نکته توجه داشته باشید که هر چه نام های پرمعناتری برای ماگریشن انتخاب کنید مدیریت آپدیت های دیتابیس در آینده برای شما راحتتر خواهد بود.

پس دستور زیر را در محیط پکیج منیجر کنسول (Package Manager Console ) وارد می‌کنم و دکمه Enter را میزنم.

add-migration Update_StudentsDB_AddColumn_NationalCode

و حالا دستور update-database را در محیط Package Manager Console وارد می‌کنم و دکمه Enter را میزنم تا دستور اجرا و دیتابیس آپدیت شود.

update-database

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

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

برچسب ها

آرزو ابراهیمی

بیش از 6 سال است که زمینه طراحی و توسعه سایت فعالیت می‌کنم، طراح و برنامه نویس انواع سامانه‌های تخصصی پزشکی، مناقصات، فروشگاهی و ... بودم و هستم و هدفم در سایت میزفا ارائه اطلاعات بروز و ناب در زمینه طراحی سایت است. تا از این طریق بتونم تجربیات و دانسته های خودم را با تمامی علاقمندان به مباحث طراحی سایت به اشتراک بزارم .

نوشته های مشابه

‫16 نظر داریم، تو هم نظر بذار، پاسخ کامل میدیم :)

  1. سلام
    من تازه ویندوز رو عوض کردم و برنامه ها رو دوباره نصب کردم و وقتی خواستم دستور update-database رو اجرا کنم با این ارور
    A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server
    مواجه شدم

    هر چی گشتم جواب درستی پیدا نکردم

    1. سلام وقتتون بخیر
      این خطا مربوط به اتصال به دیتابیس هست که موفقیت آمیز نیست … ابتدا مطمئن بشید که sql server به درستی و به صورت کامل نصب شده هست.
      بعدش اگههمچی اوکی بود روی This Pc کلیک کرده و سپس روی Manage کلیک کنید و از طریق مسیر زیر MSSQL Server رو Run کنید.
      ServicesAndApplications -> Sql Server Configuration Manage -> Sql Server Services

  2. سلام خانم ابراهیمی،
    ممنون از مطالب مفیدو خوبتون، آیا راهی هست که بدون مایگریشن و آپدیت در PM، بطور خودکار در برنامه همین دستورات رو اعمال کرد؟ یعنی با آپدیت مدل و اجرای سایت ، جدول دیتابیس آپدیت بشه.
    AutomaticMigrationsEnabled و MigrateDatabaseToLatestVersion رو برای چه منظوری میشه استفاده کرد؟
    ممنون

    1. سلام وقتتون بخیر … خواهش میکنم
      خیر بدون ماگریشن نمیشه دیتابیس رو آپدیت کرد و لازمه شما حتما ماگریشن رو به پروژتون اضافه کنید.
      با قعال کردن AutomaticMigrationsEnabled فقط ماگریشن به صورت اتوماتیک به پروژتون اضافه میشه.

  3. سلام با تشکر از سایت خوبتون ببخشید من میخوام یکی از اتریبیوت هایی که به یکی از فیلدهام دادم رو در مدل حذف کنم بعد چطور باید migration را آپدیت کنم تا تغییرات ایجاد شه برای حذف اون صفت

    1. سلام وقتتون بخیر
      شما اتربیوت رو حذف کنید سپس یک Migration جدید ایجاد کنید و بعدش دیتابیس رو آپدیت کنید.

  4. سلام.مرسی از آموزش جامعتون.
    من یه ستون میخوام تعریف کنم واسه تایم

    [DataType[(DataType.DateTime)
    { public DateTime dtime { get; set
    ولی وقتی کاربر زمان رو وارد میکنه در دیتابیس همه بصورت “0001-01-01 00:00:00.0000000” ذخیره میشه به جای تایم مورد نظر کاربر!
    چی کار کنم؟وقتی از نوع string تعریف میکنم به جای DateTime درست ذخیره میشه.ولی میخوام این رو با زمان حال مقایسه کنم واسه همین نمیتونه از نوع string باشه

    1. سلام وقتتون بخیر
      شما فقط کافیه نوع پراپرتی را از نوع DateTime تعریف کنید دیگه نیازی به استفاده از اتریبوت DataType نیست
      تاریخ شمسی رو از کاربر بگیرید و بعد به تاریخ میلادی تبدیل کرده و در دیتابیس ذخیره کنید.

    2. سلام من به یکی از فیلد هام maxLength نداشت و بعد متوجعه شدم نداره و گذاشتم و رفتم دیتابیس رو ابدیت کنم ولی ارور میده میشه راهنمایی کنید

  5. خیلی ممنون
    واقعا مفیدترین آموزش Code First به زبون فارسی رو دارین
    خیلی استفاده کردم از مطالبتون 🙂
    یه سوال داشتم : چجوری میتونم نوع یک ستون رو تغییر بدم؟ مثلا از نوع string تعریف کردم حالا میخوام به date تغییرش بدم.
    نوعش رو تو مدلم درست کردم ولی وقتی مایگریشن رو اضافه میکنم خطای build failed میده

    1. سلام خواهش میکنم خوش حالم براتون مفید بوده است.
      وقتی build failed رخ میده یعنی پروژتون خطا داره ابتدا پروژتون رو build کنید تا خطاها نمایش داده شوند و سپس خطاها رو رفع کنید و بعد migration را اضافه کنید.

  6. سلام
    خسته نباید خانوم مهندس …
    من با روش Data First تو اتصال به پایگاه دادم به مشکل خوردم.
    اونم اینه که وقتی یه جدول جدید میسازم بعد از این که مدل داده ای رو تو ویژوال آپدیت میکنم جدول به دیاگرام مدل داده ای اضافه میشه اما کلاس های اون ساخته نمیشه
    اما وقتی همون جدول رو یه فیلد جدید اضافه کینم بعد از ریفرش کردن مشکلی نداره اون پروپرتی به کلاس جدول اضافه میشه (همین مشکل برای ویو ها هم هست)
    و مشکل دگ این که وقتی یه پروسیجر هم درست میکنم همین مشکل رو دارم کلاسش ساخته نمیشه. (ممنون میشم کمکم کنید.)
    داشتم تو گوگل دنبال راه حلش میگشتم اولین سایتی که اورد سایت شما بود.

    1. سلام وقتتون بخیر
      توی روش Code First چنین مشکلی رو دارید؟ یعنی جدول شما به دیتابیس اضافه نمیشود؟ یا به database diagram ؟

  7. Operand type clash: int is incompatible with datetime2
    وقتی میخوام آپدیت کنم این خطا رو میده

    1. سلام وقتتون بخیر
      داره به نوع تاریخ DateTime2 گیر میده.
      نوع همه پراپرتی های از نوع تاریخ را DateTime قرار دهید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


حداکثر حجم فایل برای آپلود: 1 مگابایت.
فایل‌های مجاز برای آپلود: عکس, ویس, ویدیو, ورد یا پی دی اف, فایل متنی, زیپ.
شما می‌تونید برای بهتر پرسیدن سوالتون، عکس یا ویس یا حتی فیلم در بخش نظرات میزفا آپلود کنید. برای ضبط ویس می‌تونید از خود واتس آپ استفاده کنید و بعد اینجا آپلود کنید و برای ارسال عکس هم کافی هست اسکرین شات بگیرید.

دکمه بازگشت به بالا
Share via
سایت خود را در گوگل مدیریت کنید + ۱۵ ساعت فیلم آموزشیجزئیات بیشتر اینجا کلیک کنید
بستن
با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
ترک میزفا خوب نیست!
دوره سئو، رایگان شد.
فرصتی رایگان برای یادگیری
کاراکتر اشاره گر
دوره سئو، رایگان شد.
فرصتی رایگان برای یادگیری
کاراکتر اشاره گر