Koda pirmā migrācija, varat atjaunināt izmaiņas modelī savā kodā datu bāzē, lai izmantotu koda pirmo migrāciju, vispirms tas jāatver:
Konsolē Tools-NuGet Package Manager-Package Manager ierakstiet: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, nospiediet taustiņu Enter. (Ņemiet vērā, ka ir jādefinē izmantojamais konteksts, jo autentifikācijas konteksts tiek automātiski izveidots, veidojot projektu.) Kad tas ir izdarīts, tiek izveidota mape Migrācijas, kurā ir Configuration.cs klase.
Šajā brīdī ir nepieciešama papildu darbība, lai Code First darbotos, ja izveidojat migrāciju tūlīt, tā mēģinās pievienot kontekstuālo entītiju datu bāzei, un migrācija neizdosies, jo datu bāzē jau pastāv tabulas Produkti un kategorijas. Tāpēc vispirms mums ir jāizveido migrācija, kas ir inicializēta uz tukšu, un pēc tam mēs varam pievienot migrāciju visām modifikācijām.
PM> atjaunināšanas datu bāze Norādiet karodziņu "-Verbose", lai skatītu mērķa datu bāzei lietotos SQL priekšrakstus. Nav gaidāmas nepārprotamas migrācijas. Automātiskās migrācijas lietošana: 201806070740457_AutomaticMigration. System.Data.SqlClient.SqlException (0x80131904): datu bāzē jau pastāv objekts ar nosaukumu "Konts". pie System.Data.SqlClient.SqlConnection.OnError(SqlException izņēmums, Būla pārtraukumsConnection, Action'1 wrapCloseInAction) pie System.Data.SqlClient.SqlInternalConnection.OnError(SqlException izņēmums, Būla pārtraukumsConnection, Action'1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Būla zvanītājsHasConnectionLock, Būla asyncClose) In System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Būla asinhrons, Int32 taimauts, Būla asyncWrite) In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Būla sendToPipe, Int32 taimauts, Boolean& usedCache, Būla asyncWrite, Būla inRetry) Sistēmā System.Data.SqlClient.SqlCommand.ExecuteNonQuery() Sadaļā System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c) Sadaļā System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget mērķis, Func'3 operācija, TInterceptionContext interceptionContext, Action'3 izpilde, Action'3 izpildīta) Sadaļā System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand komanda, DbCommandInterceptionContext interceptionContext) Sadaļā System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery() Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection savienojums, DbTransaction transakcija, DbInterceptionContext interceptionContext) Sadaļā System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection savienojums, DbTransaction transakcija , DbInterceptionContext interceptionContext) System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection savienojums, DbTransaction transakcija, DbInterceptionContext interceptionContext) Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transakcija, DbInterceptionContext interceptionContext) Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext) Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext) System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection) vietnē System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30() Sadaļā System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0() pie System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation) Sadaļā System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Darbības operācija) Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction) Sadaļā System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements) vietnē System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements) In System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Būla pazemināšana, Būla auto) vietnē System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Būla pazemināšana) In System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean pazemināšana) System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId) vietnē System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId) vietnē System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration) Sadaļā System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d() vietnē System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) vietnē System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) vietnē System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) Sadaļā System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) vietnē System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() Sadaļā System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d Kļūdas numurs: 2714, valsts: 6, klase: 16 Datu bāzē jau pastāv objekts ar nosaukumu Konts.
Ja rodas iepriekš minētā kļūda, pakotņu pārvaldnieka konsolē ierakstiet Add-Migration InitialCreate -IgnoreChanges, lai izveidotu tukšu migrāciju.
IgnoreChanges logotips tiek izmantots, lai nodrošinātu, ka nekas netiek darīts šai migrācijai. To darot, datu bāzē tiek izveidota migrācijas tabula, kas ir datu bāzes momentuzņēmums pirms tās migrēšanas.
Pēc tam pakotņu pārvaldnieka konsolē ievadiet update-database, lai atjauninātu inicializācijas migrāciju uz datu bāzi.
Kad migrācija ir inicializēta, atjauniniet datu bāzi, izmantojot koda pirmo migrāciju:
Pievienojiet kolonnu Descrip{filter}tion tabulai Product un iestatiet garumu uz 50 ([StringLength(50)]); Tagad pievienojiet jaunu migrāciju, lai atjauninātu izmaiņas datu bāzē.
Pakotņu pārvaldnieka konsolē ievadiet:Pievienot migrāciju add_product_descrip{filter}tion(add_product_descrip{filter}tion) pievienos failu mapei Migrācijas, lai aprakstītu migrāciju. Pēc tam pakotņu pārvaldnieka konsolē ierakstiet:
atjaunināt datu bāzi, jaunā kolonna tiks pievienota tabulai Produkti.
|