Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 27080|Svare: 0

[Kilde] Oppdater databasen din med Code First-migrering

[Kopier lenke]
Publisert på 07.06.2018 15:56:58 | | |
Code First Migration, du kan oppdatere endringene dine i modellen i koden din til databasen, for å bruke Code First Migration må du først åpne den:

I Tools-NuGet Package Manager-Package Manager-konsollen, skriv: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, trykk Enter. (Merk at du må definere konteksten du skal bruke fordi autentiseringskonteksten automatisk opprettes når du oppretter prosjektet.) Når det er gjort, opprettes en Migrations-mappe som inneholder en Configuration.cs klasse.

På dette tidspunktet kreves et ekstra steg for å få Code First til å fungere; hvis du lager en migrering nå, vil den prøve å legge til den kontekstuelle enheten i databasen, og migreringen vil mislykkes fordi tabellene for produkter og kategorier allerede finnes i databasen. Først må vi lage en migrering som initialiseres til tom, og deretter kan vi legge til en migrasjon til eventuelle endringer.

PM> Oppdateringsdatabase
Spesifiser flagget "-Verbose" for å se SQL-setningene som er brukt på måldatabasen.
Ingen pågående eksplisitte migrasjoner.
Anvendelse av automatisk migrering: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Et objekt kalt 'Account' finnes allerede i databasen.
   på System.Data.SqlClient.SqlConnection.OnError(SqlException-unntak, boolsk breakConnection, Action'1 wrapCloseInAction)
   på System.Data.SqlClient.SqlInternalConnection.OnError(SqlException-unntak, boolsk breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   I 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, boolsk inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   I System.Data.Entitet.Infrastruktur.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   I System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operasjon, TInterceptionContext interceptionContext, Action'3 utføres, Action'3 utført)
   I System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand kommando, DbCommandInterceptionContext interceptionContext)
   I System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   I System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction-transaksjon, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction-transaksjon , DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction-transaksjon, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transaksjon, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext avskjæringKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   på System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   på System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   I System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operasjon)
   I System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   på System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, boolsk nedgradering, boolsk bil)
   på System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, boolsk nedgradering)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean nedgradering)
   på System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, streng targetMigrationId, streng lastMigrationId)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, streng targetMigrationId, streng lastMigrationId)
   på System.Data.Entity.Migrations.DbMigrator.UpdateInternal(Streng targetMigration)
   I System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   på System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   på System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   på System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   I System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   på System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   I System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Feilnummer: 2714, Stat: 6, Klasse: 16
Et objekt kalt 'Konto' eksisterer allerede i databasen.

Hvis du støter på feilen ovenfor, skriv Add-Migration InitialCreate -IgnoreChanges i Package Manager-konsollen for å opprette en tom migrering.

IgnoreChanges-logoen brukes for å sikre at ingenting gjøres for denne migreringen. Å gjøre dette oppretter en migreringstabell i databasen, som er et øyeblikksbilde av databasen før den migreres.

Deretter skriver du inn update-database i pakkehåndteringskonsollen for å oppdatere initialiseringsmigreringen til databasen.

Etter at migreringen er initialisert, oppdater databasen ved hjelp av Code First Migration:

Legg til kolonnen Descrip{filter}tion i produkttabellen og sett lengden til 50, ([StringLength(50)]); Legg nå til en ny migrering for å oppdatere endringene i databasen.

I Package Manager-konsollen skriver du inn:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) vil legge til en fil i Migrations-mappen for å beskrive migreringen. Deretter, i Package Manager-konsollen, skriv:

update-database, vil den nye kolonnen bli lagt til i Produkter-tabellen.





Foregående:TCP-portkommunikasjonsdemonstrasjon
Neste:asp.net mvc bruker RenderAction lokal visning for å laste inn dynamiske data
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com