See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 27080|Vastuse: 0

[Allikas] Uuenda oma andmebaasi Code First migratsiooniga

[Kopeeri link]
Postitatud 07.06.2018 15:56:58 | | |
Code First Migration, saad uuendada oma muudatusi mudelis oma koodis andmebaasi, Code First Migrationi kasutamiseks pead esmalt selle avama:

Tools-NuGet Package Manager-Package Manager konsoolis kirjuta: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, vajuta Enter. (Pane tähele, et pead määratlema kasutatava konteksti, sest autentimiskontekst luuakse automaatselt projekti loomisel.) Kui see on tehtud, luuakse Migrations kaust, mis sisaldab Configuration.cs klassi.

Selles etapis on vaja veel üht sammu, et Code First toimiks, kui teed migratsiooni nüüd, üritab see lisada kontekstuaalse üksuse andmebaasi ja migratsioon ebaõnnestub, sest toote- ja kategooriatabelid on andmebaasis juba olemas. Esmalt peame looma migratsiooni, mis initsialiseeritakse tühjaks, ja seejärel saame lisada migratsiooni igale muudatusele.

PM> Uuendus-andmebaas
Määrake "-Verbose" lipp, et näha sihtandmebaasile rakendatud SQL-lauseid.
Ei mingeid otseseid migratsioone.
Automaatse migratsiooni rakendamine: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Objekt nimega 'Konto' eksisteerib juba andmebaasis.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   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, Boolean async, Int32 timeout, Boolean asyncWrite)
   In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   In System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget sihtmärk, Func'3 operatsioon, TInterceptionContext interceptionContext, Action'3 täidetakse, Action'3 täidetakse)
   System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand käsk, DbCommandInterceptionContext interceptionContext)
   In System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   In System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction , DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction transaction, DbInterceptionContext InterceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   aadressil System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   aadressil System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   In System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operatsioon)
   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatements (IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   aadressil 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, Boolean alandamine, Boolean auto)
   at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean downgrading)
   In System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean alandamine)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, string lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, string targetMigrationId, string lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(string targetMigration)
   In System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   aadressil System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   aadressil System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   aadressil System.Data.Entity.Migrations.DbMigrator.Update(string targetMigration)
   System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (string targetMigration)
   aadressil System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   In System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Veanumber:2714,State:6,Klass:16
Objekt nimega 'Konto' eksisteerib juba andmebaasis.

Kui tekib ülaltoodud viga, kirjuta Package Manager konsoolisse Add-Migration InitialCreate -IgnoreChanges, et luua tühi migratsioon.

IgnoreChanges logo kasutatakse selleks, et tagada selle migratsiooni jaoks midagi ei tehta. Seda tehes luuakse andmebaasis migratsioonitabel, mis on andmebaasi hetktõmmis enne selle migreerimist.

Seejärel sisesta paketihalduri konsooli update-database, et uuendada initsialiseerimise migratsiooni andmebaasi.

Pärast migratsiooni initsialiseerimist uuenda andmebaasi Code First migratsiooni abil:

Lisa Descrip{filter}tion veerg toote tabelisse ja määra pikkuseks 50, ([StringLength(50)]); Nüüd lisa uus migratsioon, et andmebaasi muudatusi uuendada.

Package Manager konsoolis sisesta:Add-migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) lisab migratsiooni kausta faili, et kirjeldada migratsiooni. Järgmisena sisesta Package Manager konsooli:

uuendus-andmebaas, uus veerg lisatakse toodete tabelisse.





Eelmine:TCP pordi sideühenduse demo
Järgmine:asp.net mvc kasutab dünaamiliste andmete laadimiseks RenderAction lokaalset vaadet
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com