Entity Framework 6 menambahkan dukungan untuk beberapa DbContext
s dengan menambahkan tanda -ContextTypeName
dan -MigrationsDirectory
. Saya baru saja menjalankan perintah di Package Manager Console saya dan menempelkan output di bawah ...
Jika Anda memiliki 2 DbContext
detik dalam proyek Anda dan dijalankan enable-migrations
, Anda akan mendapatkan kesalahan (seperti yang mungkin sudah Anda ketahui):
PM> enable-migrations
More than one context type was found in the assembly 'WebApplication3'.
To enable migrations for 'WebApplication3.Models.ApplicationDbContext', use Enable-Migrations -ContextTypeName WebApplication3.Models.ApplicationDbContext.
To enable migrations for 'WebApplication3.Models.AnotherDbContext', use Enable-Migrations -ContextTypeName WebApplication3.Models.AnotherDbContext.
Jadi, Anda harus menjalankan enable-migrations
pada masing-masing DbContext
secara terpisah. Dan Anda harus menentukan folder untuk setiap Configuration.cs
file yang akan dibuat ...
PM> Enable-Migrations -ContextTypeName ApplicationDbContext -MigrationsDirectory Migrations\ApplicationDbContext
Checking if the context targets an existing database...
Code First Migrations enabled for project WebApplication3.
PM> Enable-Migrations -ContextTypeName AnotherDbContext -MigrationsDirectory Migrations\AnotherDbContext
Checking if the context targets an existing database...
Code First Migrations enabled for project WebApplication3.
Untuk menambahkan migrasi untuk masing-masing DbContext
, Anda melakukannya seperti ini dengan menentukan nama Configuration
kelas yang sepenuhnya memenuhi syarat :
PM> Add-Migration -ConfigurationTypeName WebApplication3.Migrations.ApplicationDbContext.Configuration "InitialDatabaseCreation"
Scaffolding migration 'InitialDatabaseCreation'.
The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration InitialDatabaseCreation' again.
PM> Add-Migration -ConfigurationTypeName WebApplication3.Migrations.AnotherDbContext.Configuration "InitialDatabaseCreation"
Scaffolding migration 'InitialDatabaseCreation'.
The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration InitialDatabaseCreation' again.
Dan Anda menjalankan update-database
cara yang sama:
PM> Update-Database -ConfigurationTypeName WebApplication3.Migrations.ApplicationDbContext.Configuration
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201402032113124_InitialDatabaseCreation].
Applying explicit migration: 201402032113124_InitialDatabaseCreation.
Running Seed method.
PM> Update-Database -ConfigurationTypeName WebApplication3.Migrations.AnotherDbContext.Configuration
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201402032113383_InitialDatabaseCreation].
Applying explicit migration: 201402032113383_InitialDatabaseCreation.
Running Seed method.
Semoga ini membantu.
MigrateDatabaseToLatestVersion
forzingctx.Database.initialize()
dari setiap konteks untuk berjalan dalam urutan yang benar, atau menjalankanUpdate-Database
perintah dengan tangan dalam urutan yang benar. (Dan sebaliknya, jika Anda melakukan migrasi db ke versi sebelumnya). Itu "berbahaya" tapi bisa dilakukan.