Migrasi Kode Pertama, Anda dapat memperbarui perubahan model dalam kode Anda ke database, untuk menggunakan Migrasi Kode Pertama, Anda harus membukanya terlebih dahulu:
Di konsol Tools-NuGet Package Manager-Package Manager, ketik: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, tekan Enter. (Perhatikan bahwa Anda perlu menentukan konteks yang perlu Anda gunakan karena konteks autentikasi dibuat secara otomatis saat Anda membuat proyek.) Setelah selesai, folder Migrasi dibuat, yang berisi kelas Configuration.cs.
Pada titik ini, ada langkah tambahan yang diperlukan untuk membuat Code First berfungsi, jika Anda membuat migrasi sekarang, migrasi akan mencoba menambahkan entitas kontekstual ke database, dan migrasi akan gagal karena tabel Produk dan kategori sudah ada di database. Jadi pertama-tama kita perlu membuat migrasi yang diinisialisasi untuk kosong, dan kemudian kita dapat menambahkan migrasi ke modifikasi apa pun.
PM> Update-Database Tentukan bendera "-Verbose" untuk melihat pernyataan SQL yang diterapkan ke database target. Tidak ada migrasi eksplisit yang tertunda. Menerapkan migrasi otomatis: 201806070740457_AutomaticMigration. System.Data.SqlClient.SqlException (0x80131904): Objek bernama 'Akun' sudah ada di database. di System.Data.SqlClient.SqlConnection.OnError(Pengecualian SqlException, Boolean breakConnection, Action'1 wrapCloseInAction) di System.Data.SqlClient.SqlInternalConnection.OnError(Pengecualian SqlException, Boolean breakConnection, Action'1 wrapCloseInAction) di System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) Di System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) di System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, batas waktu Int32, Boolean asyncWrite) Dalam System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) Di System.Data.SqlClient.SqlCommand.ExecuteNonQuery() Di System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c) Di System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](Target TTarget, operasi Func'3, TInterceptionContext interceptionContext, Action'3 mengeksekusi, Action'3 dieksekusi) Di System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(perintah DbCommand, DbCommandInterceptionContext interceptionContext) Di System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery() Di System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, koneksi DbConnection, transaksi DbTransaction, DbInterceptionContext intersepsiKonteks) Di System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, koneksi DbConnection, transaksi DbTransaction , DbInterceptionContext interceptionContext) Dalam System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, koneksi DbConnection, transaksi DbTransaction, DbInterceptionContext interceptionContext) Di System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, transaksi DbTransaction, DbInterceptionContext intersepsiKonteks) Di System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, koneksi DbConnection, DbInterceptionContext intersepsiKonteks) Di System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, koneksi DbConnection, DbInterceptionContext interceptionContext) di System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, koneksi DbConnection) di System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30() Di System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0() di System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Operasi Func'1) Di System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Operasi tindakan) Di System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction) Di System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements) di System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements) Di System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean menurunkan tingkat, Boolean otomatis) di System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, penurunan versi Boolean) Di System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean menurunkan) di System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId) di System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId) di System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) Di System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d() di System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Tindakan harusSucceedToKeepDatabase) di System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) di System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) Di System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) di System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() Di System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d Nomor Kesalahan: 2714, Negara: 6, Kelas: 16 Objek bernama 'Akun' sudah ada di database.
Jika Anda mengalami kesalahan di atas, ketik Add-Migration InitialCreate -IgnoreChanges di konsol Package Manager untuk membuat migrasi kosong.
Logo IgnoreChanges digunakan untuk memastikan bahwa tidak ada yang dilakukan untuk migrasi ini. Melakukannya membuat tabel migrasi dalam database, yang merupakan rekam jepret database sebelum dimigrasikan.
Selanjutnya, masukkan update-database di konsol pengelola paket untuk memperbarui migrasi inisialisasi ke database.
Setelah migrasi diinisialisasi, perbarui database menggunakan Migrasi Kode Pertama:
Tambahkan kolom Descrip{filter}tion ke tabel Produk dan atur panjangnya menjadi 50, ([StringLength(50)]); Sekarang tambahkan migrasi baru untuk memperbarui perubahan pada database.
Di konsol Pengelola Paket, masukkan:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) akan menambahkan file ke folder Migrasi untuk menjelaskan migrasi. Selanjutnya, di konsol Pengelola Paket, ketik:
update database, kolom baru akan ditambahkan ke tabel Produk.
|