Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 27080|Risposta: 0

[Fonte] Aggiorna il tuo database con la migrazione Code First

[Copiato link]
Pubblicato su 07/06/2018 15:56:58 | | |
Migrazione Code First, puoi aggiornare le modifiche al modello nel tuo codice nel database; per usare Code First Migration, devi prima aprirla:

Nella console Tools-NuGet Package Manager-Package Manager, tipo: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, premi Invio. (Nota che devi definire il contesto da usare perché il contesto di autenticazione viene creato automaticamente quando crei il progetto.) Una volta terminato, viene creata una cartella Migrazioni, che contiene una classe Configuration.cs.

A questo punto, c'è un passaggio aggiuntivo necessario per far funzionare Code First: se crei una migrazione ora, cercherà di aggiungere l'entità contestuale al database, e la migrazione fallirà perché le tabelle Prodotti e categorie esistono già nel database. Quindi prima dobbiamo creare una migrazione che venga inizializzata a vuoto, e poi possiamo aggiungere una migrazione a eventuali modifiche.

PM> Aggiornamento - Database
Specifica il flag "-Verbose" per visualizzare le istruzioni SQL applicate al database di destinazione.
Nessuna migrazione esplicita in sospeso.
Applicare la migrazione automatica: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Un oggetto chiamato 'Account' esiste già nel database.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(eccezione SqlException, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean 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(StringMethodName, Boolean async, timeout Int32, 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(DbComando t, DbComandoContestoInterception'1 c)
   In System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operation, TInterceptionContext intercettazioneContesto, Azione'3 in esecuzione, Azione'3 eseguita)
   In System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(comando DbComando, DbComandoInterceptionContestoIntercettazioneContestoIntercettazioneContesto)
   In System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   In System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContest intercettazioneContesto)
   In System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, connessione DbConnection, transazione DbTransaction , DbIntercettazioneContestoIntercettazioneContesto)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connessione DbConnection, transazione DbTransaction, DbInterceptionContestoInterceptionContesto)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext intercettazioneContesto)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementWithinNewTransaction(IEnumerable'1 migrationStatements, connessione DbConnection, DbInterceptionContest intercettazioneContesto)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContest interceptionInterceptionContest)
   presso System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connessione DbConnection)
   su 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](operazione Func'1)
   In System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   su 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 downgrade, auto booleana)
   at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(StringId, VersionedModel sourceModel, VersionedModel targetModel, downgrade booleano)
   In System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean downgrade)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pending Migrations, Stringa targetMigrationId, stringa lastMigrationId)
   su System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pending Migrations, Stringa targetMigrationId, Stringa lastMigrationId)
   su System.Data.Entity.Migrations.DbMigrator.UpdateInternal(StringTargetMigration)
   In System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   presso System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Azione devoSuccedereMantenereDatabase)
   su System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Azione dovetSuccedereMantenerDatabase)
   su System.Data.Entity.Migrations.DbMigrator.Update(Stringa targetMigration)
   In System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(StringTargetMigration)
   su System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   In System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Numero errore: 2714, Stato: 6, Classe: 16
Un oggetto chiamato 'Account' esiste già nel database.

Se incontri l'errore sopra, digita Add-Migration InitialCreate -IgnoreChanges nella console Package Manager per creare una migrazione vuota.

Il logo IgnoreChanges viene utilizzato per garantire che non venga fatto nulla per questa migrazione. Facendo così si crea una tabella di migrazione nel database, che è uno snapshot del database prima che venga migrato.

Successivamente, inserisci update-database nella console del gestore package per aggiornare la migrazione di inizializzazione al database.

Dopo l'inizializzazione della migrazione, aggiorna il database usando Code First Migration:

Aggiungi la colonna Descrip{filter}tion alla tabella Product e imposta la lunghezza a 50, ([StringLongezza(50)]); Ora aggiungi una nuova migrazione per aggiornare le modifiche al database.

Nella console del Gestore Pacchetti, inserisci:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) aggiungerà un file alla cartella Migrazioni per descrivere la migrazione. Poi, nella console Package Manager, digita:

Update-database, la nuova colonna sarà aggiunta alla tabella Prodotti.





Precedente:Dimostrazione della connessione di comunicazione con porte TCP
Prossimo:asp.net mvc utilizza la vista locale RenderAction per caricare i dati dinamici
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com