ایجاد دیتابیس و جداول در 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 در پروژه دارید باید در کلاس 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
- آموزش استفاده از 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 چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- ارسال ایمیل در Asp.net core
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION