Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 27080|Antwoord: 0

[Bron] Werk je database bij met Code First-migratie

[Link kopiëren]
Geplaatst op 07-06-2018 15:56:58 | | |
Code First Migratie, je kunt je wijzigingen aan het model in je code bijwerken in de database, om Code First Migration te gebruiken, moet je het eerst openen:

In de Tools-NuGet Package Manager-Package Manager-console typ: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, druk op Enter. (Let op: je moet de context definiëren die je moet gebruiken, omdat de authenticatiecontext automatisch wordt aangemaakt wanneer je het project aanmaakt.) Na voltooiing wordt een Migratie-map aangemaakt, die een Configuration.cs klasse bevat.

Op dit punt is er een extra stap nodig om Code First werkend te krijgen; als je nu een migratie maakt, zal het proberen de contextuele entiteit aan de database toe te voegen, en de migratie zal mislukken omdat de Producten- en categorieëntabellen al in de database bestaan. Dus eerst moeten we een migratie maken die op leeg wordt geïnitialiseerd, en dan kunnen we een migratie toevoegen aan eventuele aanpassingen.

PM> Update-Database
Specificeer de "-Verbose"-vlag om de SQL-instructies te bekijken die op de doeldatabase zijn toegepast.
Geen lopende expliciete migraties.
Automatische migratie toepassen: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Een object genaamd 'Account' bestaat al in de database.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException-uitzondering, Boolean breakConnection, Action'1 wrapCloseInAction)
   op System.Data.SqlClient.SqlInternalConnection.OnError(SqlException-uitzondering, 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(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean&useCache, Boolean asyncWrite, Booleaan inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   In System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   In System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func'3 operation, TInterceptionContext onderscheppingContext, Actie'3 uitgevoerd, Actie'3 uitgevoerd)
   In System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   In System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   In System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnectionconnection, DbTransaction-transactie, DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnectionconnection, DbTransaction-transactie , DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-verbinding, DbTransaction-transactie, DbInterceptionContext InterceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction-transactie, DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection-verbinding, DbInterceptionContext) interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-verbinding, DbInterceptionContext interceptionContext)
   bij System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection-verbinding)
   op 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)
   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)
   op 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 downgrading, Boolean auto)
   op 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 Downgrade)
   op System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, string targetMigrationId, string lastMigrationId)
   op System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   op System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   In System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   bij System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   bij System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   op System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   In System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   op System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   In System.Data.Entity.Migraties.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Foutnummer: 2714, Staat:6, Klas: 16
Er bestaat al een object genaamd 'Account' in de database.

Als je bovenstaande fout tegenkomt, typ dan Add-Migration InitialCreate -IgnoreChanges in de Package Manager-console om een lege migratie te maken.

Het IgnoreChanges-logo wordt gebruikt om ervoor te zorgen dat er niets wordt gedaan voor deze migratie. Hierdoor wordt een migratietabel in de database aangemaakt, die een snapshot is van de database voordat deze wordt gemigreerd.

Vervolgens voer je update-database in in de package manager-console om de initialisatiemigratie naar de database bij te werken.

Nadat de migratie is geïnitialiseerd, werk je de database bij met Code First Migratie:

Voeg de Descrip{filter}tion-kolom toe aan de Producttabel en stel de lengte in op 50, ([StringLength(50)]); Voeg nu een nieuwe migratie toe om de wijzigingen in de database bij te werken.

In de Package Manager-console voert u het volgende in:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) zal een bestand toevoegen aan de Migratie-map om de migratie te beschrijven. Vervolgens typ in de Package Manager-console:

update-database, de nieuwe kolom wordt toegevoegd aan de Producten-tabel.





Vorig:TCP-poortcommunicatieverbinding demo
Volgend:asp.net mvc gebruikt de lokale weergave van RenderAction om dynamische data te laden
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com