Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 27080|Vastaus: 0

[Lähde] Päivitä tietokantasi Code First -siirrolla

[Kopioi linkki]
Julkaistu 7.6.2018 15.56.58 | | |
Code First Migrationissa voit päivittää mallin muutokset koodissasi tietokantaan, Code First Migrationin käyttämiseksi sinun täytyy ensin avata se:

Tools-NuGet Package Manager-Package Manager -konsolissa kirjoita: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, paina Enter. (Huomaa, että sinun täytyy määritellä käytettävä konteksti, koska autentikointikonteksti luodaan automaattisesti, kun luot projektin.) Kun se on valmis, luodaan Migrations-kansio, joka sisältää Configuration.cs-luokan.

Tässä vaiheessa tarvitaan ylimääräinen vaihe, jotta Code First toimii, jos luot migraation nyt, se yrittää lisätä kontekstuaalisen entiteetti tietokantaan, mutta migraatio epäonnistuu, koska Products- ja kategoria-taulut ovat jo olemassa tietokannassa. Ensin täytyy luoda migraatio, joka alustetaan tyhjäksi, ja sitten voimme lisätä migraation kaikkiin muutoksiin.

PM> Päivitys-Tietokanta
Määritä "-Verbose"-lippu nähdäksesi kohdetietokantaan sovellettavat SQL-lauseet.
Ei vireillä olevia eksplisiittisiä siirtoja.
Automaattisen migraation soveltaminen: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Olio nimeltä 'Account' on jo olemassa tietokannassa.
   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)
   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean&usedCache, Boolean asyncWrite, Boolean inRetry)
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() -tiedostossa
   System.Data.Entity.Infrastructure.Interception.DbCommandDispatcherissa. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3-operaatio, TInterceptionContext interceptionContext, Action'3 suoritetaan, Action'3 suoritetaan)
   System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand-komento, DbCommandInterceptionContext interceptionContext)
   System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery() -tiedostossa
   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, DbTransaction transaction , DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-yhteys, DbTransaction-transaktio, DbInterceptionContext interceptionContext)
   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)
   osoitteessa System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   osoitteessa 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 operation)
   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)
   osoitteessa 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 alennus, 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 alennus)
   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()
   osoitteessa System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   osoitteessa System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(merkkijono targetMigration)
   System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   osoitteessa System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   In System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Virhenumero:2714,Osavaltio:6,Luokka:16
Olio nimeltä 'Account' on jo olemassa tietokannassa.

Jos kohtaat yllä olevan virheen, kirjoita Package Manager -konsoliin Add-Migration InitialCreate -IgnoreChanges luodaksesi tyhjän migraation.

IgnoreChanges-logoa käytetään varmistamaan, ettei siirrolle tehdä mitään. Tämä luo migraatiotaulukon tietokantaan, joka on tietokannan tilannekuva ennen siirtoa.

Seuraavaksi syötä update-database paketinhallintakonsoliin päivittääksesi alustusmigraatio tietokantaan.

Kun migraatio on alustettu, päivitä tietokanta Code First Migration -menetelmällä:

Lisää Descrip{filter}tion-sarake Product-taulukkoon ja aseta pituudeksi 50, ([StringLength(50)]); Lisää nyt uusi migraatio tietokannan muutosten päivittämiseksi.

Package Manager -konsolissa syötä seuraava:Add-migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) lisää tiedoston Migrations-kansioon kuvaamaan migraatiota. Seuraavaksi kirjoita Package Manager -konsoliin:

päivitys-tietokanta, uusi sarake lisätään Tuotteet-taulukkoon.





Edellinen:TCP-porttiviestintäyhteyden demo
Seuraava:asp.net mvc käyttää RenderActionin paikallisnäkymää dynaamisen datan lataamiseen
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com