Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 27080|Svar: 0

[Kilde] Opdater din database med Code First-migreringen

[Kopier link]
Opslået på 07/06/2018 15.56.58 | | |
Code First Migration, du kan opdatere dine ændringer til modellen i din kode til databasen, for at bruge Code First Migration skal du først åbne den:

I Tools-NuGet Package Manager-Package Manager-konsollen, typ: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, tryk på Enter. (Bemærk, at du skal definere den kontekst, du skal bruge, fordi autentificeringskonteksten automatisk oprettes, når du opretter projektet.) Når det er gjort, oprettes en Migrations-mappe, som indeholder en Configuration.cs-klasse.

På dette tidspunkt kræves der et ekstra trin for at få Code First til at fungere; hvis du opretter en migration nu, vil den forsøge at tilføje den kontekstuelle enhed til databasen, og migreringen vil fejle, fordi produkt- og kategoritabellerne allerede findes i databasen. Så først skal vi oprette en migration, der initialiseres til tom, og derefter kan vi tilføje en migration til eventuelle ændringer.

PM> Opdateringsdatabase
Angiv "-Verbose"-flaget for at se SQL-sætningerne, der anvendes på måldatabasen.
Ingen afventende eksplicitte migrationer.
Anvendelse af automatisk migration: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Et objekt ved navn 'Account' findes allerede i databasen.
   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)
   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, boolesk inRetry)
   I 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 interceptionKontekst, Handling'3 udfører, Handling'3 udfø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 transaction, DbInterceptionContext aflytningKontekst)
   I System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction-transaktion , DbInterceptionKontekst aflytningKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-forbindelse, DbTransaction-transaktion, DbInterceptionKontekst aflytningKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transaktion, DbInterceptionContext aflytningKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection-forbindelse, DbInterceptionContext aflytningKontekst)
   I System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-forbindelse, 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 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, 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(Streng targetMigration)
   I System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(Streng 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
Fejlnummer: 2714, Stat: 6, Klasse: 16
Et objekt ved navn 'Konto' findes allerede i databasen.

Hvis du støder på ovenstående fejl, skal du skrive Add-Migration InitialCreate -IgnoreChanges i Package Manager-konsollen for at oprette en tom migration.

IgnoreChanges-logoet bruges til at sikre, at der ikke gøres noget ved denne migration. Når du gør det, oprettes en migrationstabel i databasen, som er et øjebliksbillede af databasen, før den migreres.

Indtast dernæst update-database i pakkehåndteringskonsollen for at opdatere initialiseringsmigreringen til databasen.

Når migreringen er initialiseret, opdateres databasen ved hjælp af Code First Migration:

Tilføj kolonnen Descrip{filter}tion til produkttabellen og sæt længden til 50, ([StringLength(50)]); Tilføj nu en ny migration for at opdatere ændringerne i databasen.

I Package Manager-konsollen indtaster:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) tilføjer en fil til Migrations-mappen for at beskrive migreringen. Dernæst skriver du i Pakkehåndteringskonsollen:

opdateringsdatabase, vil den nye kolonne blive tilføjet til Produkttabellen.





Tidligere:TCP-portkommunikationsforbindelse demonstration
Næste:asp.net mvc bruger RenderAction lokal visning til at indlæse dynamiske data
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com