دسته بندی ها
15:23 1401/02/05

ایجاد دیتابیس و جداول در Code First توسط چند Context

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Asp.net Mvc Sql Server Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3089
هوش مصنوعی

پاسخ هوش مصنوعی

برای ایجاد یا تغییر دیتابیس با استفاده از چند 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، دیتابیس خود را به درستی مدیریت کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 19:41 1401/02/05

نکته اول اینکه اگر شما بیش از یک 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

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود