Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 27080|Atbildi: 0

[Avots] Datu bāzes atjaunināšana, izmantojot migrāciju Code First

[Kopēt saiti]
Publicēts 07.06.2018 15:56:58 | | |
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.





Iepriekšējo:TCP porta sakaru savienojuma demonstrācija
Nākamo:asp.net mvc izmanto lokālo skatu RenderAction, lai ielādētu dinamiskos datus
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com