Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 27080|Svar: 0

[Källa] Uppdatera din databas med Code First-migreringen

[Kopiera länk]
Publicerad på 2018-06-07 15:56:58 | | |
Code First Migration, du kan uppdatera dina ändringar i modellen i din kod till databasen, för att använda Code First Migration måste du först öppna den:

I Tools-NuGet Package Manager-Package Manager-konsolen, skriv: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, tryck på Enter. (Observera att du måste definiera den kontext du behöver använda eftersom autentiseringskontexten automatiskt skapas när du skapar projektet.) När det är klart skapas en Migrations-mapp som innehåller en Configuration.cs klass.

Vid det här laget krävs ett extra steg för att få Code First att fungera; om du skapar en migration nu kommer den att försöka lägga till den kontextuella enheten i databasen, och migreringen kommer att misslyckas eftersom tabellerna för produkter och kategorier redan finns i databasen. Så först behöver vi skapa en migration som initieras till tom, och sedan kan vi lägga till en migrering till eventuella ändringar.

PM> Uppdateringsdatabas
Ange flaggan "-Verbose" för att visa SQL-satserna som appliceras på måldatabasen.
Inga pågående explicita migrationer.
Automatisk migrering tillämpas: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Ett objekt med namnet 'Account' finns redan i databasen.
   på System.Data.SqlClient.SqlConnection.OnError(SqlException-undantag, Boolean breakConnection, Action'1 wrapCloseInAction)
   på System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean 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)
   på 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, boolesk inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   I System.Data.Entity.Infrastructure.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 operation, TInterceptionContext interceptionKontext, Handling'3 utförs, Handling'3 utförs)
   I System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   I System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   I System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection-anslutning, DbTransaktionstransaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection-anslutning, DbTransaktionstransaktion , DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-anslutning, DbTransaktionstransaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transaktion, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-anslutning, 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()
   på System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   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, Boolean nedgradering, boolesk auto)
   på System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean 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, sträng targetMigrationId, sträng lastMigrationId)
   på System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, Sträng targetMigrationId, Sträng lastMigrationId)
   på System.Data.Entity.Migrations.DbMigrator.UpdateInternal(Sträng 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(Sträng targetMigration)
   I System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(Sträng 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
Felnummer:2714,State:6,Class:16
Ett objekt med namnet 'Account' finns redan i databasen.

Om du stöter på ovanstående fel, skriv Add-Migration InitialCreate -IgnoreChanges i Package Manager-konsolen för att skapa en tom migrering.

IgnoreChanges-logotypen används för att säkerställa att inget görs för denna migrering. Att göra det skapar en migrationstabell i databasen, som är en ögonblicksbild av databasen innan den migreras.

Därefter matar du in update-database i pakethanteringskonsolen för att uppdatera initieringsmigreringen till databasen.

Efter att migreringen initierats, uppdatera databasen med Code First Migration:

Lägg till kolumnen Descrip{filter}tion i produkttabellen och sätt längden till 50, ([StringLength(50)]); Lägg nu till en ny migrering för att uppdatera ändringarna i databasen.

I Package Manager-konsolen, skriv in:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) lägger till en fil i mappen Migrationer för att beskriva migreringen. Skriv sedan i Package Manager-konsolen:

update-databas, kommer den nya kolumnen att läggas till i tabellen Produkter.





Föregående:TCP-portkommunikationsanslutningsdemonstration
Nästa:asp.net mvc använder RenderAction lokal vy för att ladda dynamisk data
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com