به نام خدا
در بخش قبلی تا مرحله ایجاد یک Action Method ساده در یک Controller پیش رفتیم. در این قسمت قصد دارم Model های خودم را بسازم و با اتصال به DataBase ، در عمل Api های واقعی نه فرضی داشته باشم.
در ابتدا یک فولدر جدید به نام Models به پروژه اضافه میکنم. یک کلاس جدید درون فولدر Models به نام Productخواهم ساخت . تایین فیلدهای یک Model به آنالیز و منطق پروژه ما بستگی دارد. مدل Product من خیلی ساده و به شکل زیر خواهد بود.
حالا که مدل ساخته شده، نیاز است DbContext بسازیم و تنظیمات آنرا انجام دهیم و تا بتوانیم با دیتابیس از طریق این ORM در رابطه باشیم و از آن در Controller خود استفاده کنیم.
در ابتدا باید 2 مجموعه
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
را از طریق Nuget به پروژه خود اضافه کنیم که فکر نمی کنم لازم باشد برای اضافه کردن این دو پکیج برای شما آموزش یا اسکرین شات خاصی تهیه کنم، پس به ادامه مبحث خواهیم پرداخت.
یک فولدر جدید به نام Data به پروژه اضافه میکنم و درون این فولدر یک کلاس جدید به نام InventoryDbContext می سازم و تنظیمات DbContext یعنی DbSet به شکل زیر خواهد بود.
در حالت مطلوب باید کانکشن استرینگ را از Appsetting یا خلاصه جای مناسب تری بخوانید که برای من چون در حال نوشتن یک پروژه تستی هستم و ضمنن تغییر این کد برای خواندن از جای دیگر اصلن سخت نیست، همین شکلی که مشاهده می فرمائید مطلوب است، شاید در آینده اگر لازم شد، این قسمت را هم بهبود ببخشیم.
خوب حالا نوبت دستورات Migration و ایجاد دیتابیس است.برای آنکه Migration کار کند، این مجموعه را توسط Nuget به پروژه اضافه کنید
Microsoft.EntityFrameworkCore.Tools
حالا به سادگی با دستورات Migrationبه شکل زیر عمل کنید.
ابتدا دستور :
add-migration MyFirstMigration
سپس در جهت ایجاد دیتابیس و اعمال تغییرات
Update-Database
دو دستور بالا، در این قسمت که برای اجرای کامندها است باید وارد شود، یعنی از این منوها این کنسول را فعال کنید.
اگر به تصویر زیر دقت کنید، خواهید دید که دیتابیس من هم ایجاد شده است
در این پروژه زیاد خودمان را گرفتار مراحل چند لایه و ... نمیکنیم و مستقیم DbContext را در Controllerکه قبلن ساختیم Inject می کنیم و در Action Methodها ازشون استفاده میکنیم. این یک روند Dependecny Injectionساده است .
حال که به شکل بالا DbContext در کنترلر DI شده، باید Startup.csهم به شکل زیر تنظیم شود
در قسمت بعدی ، استفاده از DbConext در Action Method ها برای ایجاد تغییر در دیتابیس و ارسال کوئری و دریافت نتیجه از دیتابیس را آغاز خواهیم نمود.