لطفا راهنماییم کنید برای ساخت دیتابیس توسط مایگریشن در Code First در Asp.net Mvc Core باید دقیقا چیکار کرد؟ آموزشی هست که این کار رو به صورت مرحله به مرحله انجام بده ؟
ساخت دیتابیس توسط مایگریشن و انتیتی فریم ورک کد فرست به این صورت هست که در ابتدا شما باید انتیتی ها و ساختار دیتابیس رو مشخص کنید و سپس توسط دستورات مایگریشن این جداول و ساختارها رو به دیتابیس منتقل می کنید. برای اینکه بهتر این موضوع رو متوجه بشید یک مثال عملی رو انجام میدیم.
خب در ابتدا یک پروژه جدید از نوع Asp.net Core ایجاد کنید. (ایجاد پروژه Asp.net mvc core در ویژوال استودیو 2019)
بعد از اینکه پروژه شما ایجاد شد به ترتیب مراحل زیر را دنبال کنید.
در انتیتی فریم ورک کلاسی وجود دارد به نام 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 تنظیماتی انجام دهید و سرویس دیتابیس را به پروژه اضافه کنید و همچنین کلاس 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 کانکشن استرینگ را در فایل 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 گذاشتیم.
بعد از اینکه کلاس 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 دیتابیس خود را مشاهده خواهید کرد.
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
473
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4823
- پاسخ :
1
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
473
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
948
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|