ساخت دیتابیس توسط مایگریشن در Code First در Asp.net Mvc Core
لطفا راهنماییم کنید برای ساخت دیتابیس توسط مایگریشن در Code First در Asp.net Mvc Core باید دقیقا چیکار کرد؟ آموزشی هست که این کار رو به صورت مرحله به مرحله انجام بده ؟
ساخت دیتابیس توسط مایگریشن در Code First
ساخت دیتابیس توسط مایگریشن و انتیتی فریم ورک کد فرست به این صورت هست که در ابتدا شما باید انتیتی ها و ساختار دیتابیس رو مشخص کنید و سپس توسط دستورات مایگریشن این جداول و ساختارها رو به دیتابیس منتقل می کنید. برای اینکه بهتر این موضوع رو متوجه بشید یک مثال عملی رو انجام میدیم.
ساخت دیتابیس توسط مایگریشن در Code Firs در Asp.net Mvc Core
خب در ابتدا یک پروژه جدید از نوع Asp.net Core ایجاد کنید. (ایجاد پروژه Asp.net mvc core در ویژوال استودیو 2019)
بعد از اینکه پروژه شما ایجاد شد به ترتیب مراحل زیر را دنبال کنید.
ایجاد کلاس DbContext
در انتیتی فریم ورک کلاسی وجود دارد به نام DbContext. این کلاس در واقع نماینده دیتابیس شما در پروژه می باشد. یعنی هر جدول و یا هر ساختاری که دیتابیس شما در Sql Server داشته باشد در این کلاس تعریف می شود. بنابراین روی پوشه Models کلیک راست کنید و یک کلاس جدید به نام ApplicationDbContext ایجاد کنید. این کلاس از کلاس DbContext مشتق می شود.
نکته : دقت کنید که برای استفاده از کلاس DbContext باید پکیج Microsoft.EntityFrameworkCore رو از طریق nuget نصب کنید. (نصب پکیج از nuget در ویژوال استودیو)
using Microsoft.EntityFrameworkCore;
namespace CodeFirstDataBase.Models
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
}
}
همانطور که مشاهده می کنید کلاس ApplicationDbContext از کلاس DbContext مشتق شده است. همچنین برای این کلاس یک سازنده همنام با نام خود کلاس تعریف کردیم. (سازنده کلاس چیست) شما هم کدها را مشابه با کدهای بالا بنویسید.
در حال حاضر Solution پروژه به این شکل می باشد.
تنظیمات کلاس Startup.cs - افزودن سرویس دیتابیس
خب حالا باید در کلاس Startup.cs تنظیماتی انجام دهید و سرویس دیتابیس را به پروژه اضافه کنید و همچنین کلاس ApplicationDbContext را به عنوان نماینده دیتابیس در پروژه معرفی کنید. بنابراین این کلاس را باز کنید و در متد ConfigureService دستورات زیر را بنویسید.
public void ConfigureServices(IServiceCollection services)
{
//این کدها اضافه شود
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
////////
services.AddControllersWithViews();
}
خب در کدهای بالا سرویس AddDbContext به پروژه اضافه شده. در این سرویس کلاس ApplicationDbContext به عنوان نماینده دیتابیس در پروژه معرفی شده. همچنین دقت کنید با توجه به اینکه از دستور UseSqlServer استفاده شده پکیج زیر به پروژه اضافه بشه.
microsoft.entityframeworkcore.sqlserver
نکته : در دستورات بالا متدی به نام GetConnectionString داریم که نام رشته اتصال یا کانکشن استرینگ را نیاز دارد. در اینجا فرض کرده ایم نام کانکشن استرینگ DefaultConnection می باشد. در مرحله بعدی به تنظیم کانکشن استرنیگ می پردازیم.
ایجاد کانکشن استرینگ در Asp.net Core
خب نوبت به تنظیم کانکشن استرینگ می باشد. در Asp.net Core کانکشن استرینگ را در فایل appsettings.json نگهداری می کنیم. این فایل را باز کنید و مطابق کدهای زیر کانکشن استرینگ را ایجاد کنید.
{
"ConnectionStrings": {
"DefaultConnection": "Server=.; Initial Catalog = MyDataBaseName; user Id=sa; Password=***;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
در کدهای بالا در بخش اول ConnectionString تعریف شده است. همانطور که مشاهده می کنید نام کانکشن استرینگ را DefaultConnection گذاشتیم.
ایجاد جدول در مدل داده ای در انتیتی فریم ورک Code First
بعد از اینکه کلاس DbContext ایجاد شد و تنظیمات مربوط به کانکشن استرینگ و کلاس Startup.cs انجام شد نیاز به ایجاد یک جدول داریم. بنابراین روی پوشه Models کلیک راست کنید و یک کلاس جدید به نام Customer ایجاد کنید. در واقع این کلاس همان جدول دیتابیسی ما می باشد و Property های این کلاس ستونهای جدول می باشد.
کلاس Customer
public class Customer
{
[Key]
public int CustomerID { get; set; }
public string CustomerName { get; set; }
public string CustomerAddress { get; set; }
}
خب در کلاس Customer سه پراپرتی داریم که همان ستونهای جدول Customer می باشد. حالا باید در کلاس ApplicationDbcontext این کلاس را به عنوان یک جدول معرفی کنیم. در ادامه توسط دستور زیر این کار را انجام می دهیم.
public DbSet<Customer> CustomerTbl { get; set; }
بنابراین کلاس ApplicationDbContext به این صورت تبدیل خواهد شد.
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Customer> CustomerTbl { get; set; }
}
ایجاد مایگریشن و ساختن دیتابیس
خب بعد از انجام این مراحل نوبت به ایجاد مایگریشن می باشد. برای استفاده از Migration در ابتدا پکیج زیر را نصب کنید.
microsoft.entityframeworkcore.tools
حالا از منوی Tools --> Nuget Package Manager --> Package Manager Console را انتخاب کنید تا پنجره Package Manager Console باز بشه. در ابتدا باید یک Migration جدید ایجاد کنید. بنابراین دستور زیر را بنویسید:
PM> Add-Migartion migrationName
توسط دستور Add-Migration میتونید یک مایگریشن جدید ایجاد کنید که تمامی تغییرات مدل شما را در بر میگیرد. چون این اولین مایگریشن پروژه می باشد کل ساختار و همه جداول را شامل می شود. (دقت کنید به جای migrationName می توانید نام مایگریشن را قرار دهید)
حالا برای تبدیل مایگریشن به دیتابیس میتونید از دستور زیر استفاده کنید.
PM> Update-Database
بعد از زدن دکمه Enter در Sql Server دیتابیس خود را مشاهده خواهید کرد.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2