ایجاد دیتابیس و جداول در Code First توسط چند Context
یک پروژه با Asp.net Core 5 دارم کار میکنم. در پروژه برای ایجاد دیتابیس از مدل Code First استفاده می کنم. بنا به دلایلی بیش از یک Context دارم در این پروژه. چجوری میتونم دیتابیس خودم رو توسط این Context ها ایجاد و یا تغییر بدم ؟
Context اول از نوع Identity:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Context دوم از نوع DbContext:
public class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
}
پاسخ هوش مصنوعی
برای ایجاد یا تغییر دیتابیس با استفاده از چند Context در یک پروژه ASP.NET Core 5 با الگوی Code First، باید مراحل زیر را دنبال کنید:
1. **تعریف Connection String:** شما باید یک connection string در فایل `appsettings.json` تعریف کنید که به دیتابیس شما اشاره کند.
{
"ConnectionStrings": {
"DefaultConnection": "Server=your_server;Database=your_database;User Id=your_user;Password=your_password;"
}
}
2. **تنظیم Context ها در `Startup.cs`:** شما باید هر دو Context را در متد `ConfigureServices` در `Startup.cs` ثبت کنید.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
// بقیه تنظیمات
}
3. **Migration ایجاد کنید:** برای هر Context جداگانه، باید migrations را ایجاد کرده و آنها را اعمال کنید.
شما می توانید این کار را به صورت زیر انجام دهید:
dotnet ef migrations add InitialCreate --context ApplicationDbContext
dotnet ef migrations add InitialCreateMyContext --context MyContext
dotnet ef database update --context ApplicationDbContext
dotnet ef database update --context MyContext
4. **مدیریت تغییرات:** برای اعمال تغییرات در دیتابیس در آینده، می توانید تغییرات را در مدل ها انجام داده و دوباره migrations جدید ایجاد کنید.
این مراحل به شما امکان می دهد تا با استفاده از چند Context، دیتابیس خود را به درستی مدیریت کنید.
نکته اول اینکه اگر شما بیش از یک Context در پروژه دارید باید در کلاس StartUp و در متد Configuration هم این Context ها رو تعریف کنید. بنابراین کلاس StartUp شما مشابه زیر باید باشه :
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection"));
});
...
}
همونطور که در دستورات بالا مشاهده می کنید 2 بار از سرویس AddDbContext استفاده شده.
نکته : دقت کنید در هر دو کانتکست از یک Connection String استفاده شده.
ایجاد Migration وقتی چند Context داریم
اگر در پروژه بیشتر از یک Context وجود دارد و بر اساس آن قصد دارید مایگریشن ایجاد کنید می تونید از دستور زیر استفاده کنید :
Add-Migration mig1 -C MyContext
طبق دستور بالا بعد از عبارت Add-Migration نام مایگریشن را قرار می دهیم(در این مثال mig1) سپس عبارت C- که مخفف Context می باشد و در آخر هم اسم Context
به روز رسانی دیتابیس وقتی چند Context داریم
خب حالا برای به روز رسانی هم می تونیم از دستور زیر استفاده کنیم :
Update-Database -Context MyContext
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- ارسال ایمیل در Asp.net core
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION