2016-07-01 17 views
3

Ich habe Probleme beim Hinzufügen einer neuen Tabelle zu meiner Datenbank. Dies sind die Befehle, die ich eingegeben beim Versuch, die neue Migration hinzuzufügen:EF Migrationen - Es ist bereits ein Objekt mit dem Namen '' in der Datenbank

Add-Migration AdminSett 

Gerüste Migration 'AdminSett'. Der Designer-Code für diese Migrationsdatei enthält eine Momentaufnahme Ihres aktuellen Code First-Modells. Dieser Snapshot wird verwendet, um die Änderungen an Ihrem Modell zu berechnen, wenn Sie die nächste Migration scalieren. Wenn Sie weitere Änderungen an Ihrem -Modell vornehmen, das Sie in diese Migration einbeziehen möchten, können Sie es erneut mit konfigurieren, indem Sie "Add-Migration AdminSett" erneut ausführen.

Update-Database AdminSett 

Geben Sie die '-Verbose' Flag die SQL-Anweisungen zu sehen ist auf die Zieldatenbank angewendet. Anwenden expliziter Migrationen: [201607011035464_AdminSett]. Anwenden der expliziten Migration: 201607011035464_AdminSett. System.Data.SqlClient.SqlException (0x80131904): In der -Datenbank befindet sich bereits ein Objekt namens "AdminSettings". bei System.Data.SqlClient.SqlConnection.OnError (SqlException Ausnahme, Boolean Breakconnection, Aktion 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) bei -System. Data.SqlClient.TdsParser.TryRun (RunBehavior runBehavior, SqlCommand CmdHandler, SqlDataReader Datenstrom, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & Dataready) bei System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methoden, Boolean async, Int32 Timeout, Boolean asyncWrite) um System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (TaskCompletionSource 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext 1 c) bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func 3 Betrieb, TInterceptionContext interceptionContext, Aktion 3 executing, Action 3 ausgeführt) bei System.Data.Entity. Infrastructure.Interception.DbCommandDispatcher.NonQuery (DbCommand Befehl DbCommandInterceptionContext interceptionContext) bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
bei System.Data.Entity.Migrations.DbMigrator.ExecuteSql (MigrationStatement migrationStatement, DbConnection-Verbindung, DbTransaction Transaktion DbInterceptionContext interceptionContext) bei System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql (MigrationStatement migrationStatement, DbConnection Verbindung, DbTransaction Transaktion DbInterceptionContext interceptionContext) bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal (IEnumerable migrationStatements, DbTransaction Transaktion DbInterceptionContext interceptionContext) bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction (IEnumerable migrationStatements, DbConnection Verbindung, DbInterceptionContext interceptionContext) bei 0.123.System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal (IEnumerable Betrieb) bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute (Aktion Betrieb) bei System.Data.Entity.Migrations.DbMigrator.ExecuteStatements (IEnumerable migrationStatements) bei -System. Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements (IEnumerable 1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable 1 Operationen, IEnumerable pendingMigrations, String targetMigrationId, String lastMigrationId)
bei System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade (IEnumerable` 1 pendingMigrations, String targetMigrationId, String lastMigrationId)
bei System.Data.Entity.Migrations.DbMigrator.UpdateInternal (String targetMigration) bei System.Data.Entity.Migrations.DbMigrator. <> c__DisplayClassc.b__b() bei System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists (Aktion mustSucceedToKeepDatabase) bei System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists (Aktion mustSucceedToKeepDatabase) bei -System. Data.Entity.Migrations.DbMigrator.Update (String targetMigration) bei System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (String targetMigration) bei System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner. Run() bei System.AppDomain.DoCallBack (CrossAppDomainDelegate callBackDelegate) um Sys tem.AppDomain.DoCallBack (CrossAppDomainDelegate callBackDelegate)
bei System.Data.Entity.Migrations.Design.ToolingFacade.Run (Baserunner runner) bei System.Data.Entity.Migrations.Design.ToolingFacade.Update (String targetMigration, Boolesche Kraft) um System.Data.Entity.Migrations.UpdateDatabaseCommand. <> c__DisplayClass2. < .ctor> b__0() bei System.Data.Entity.Migrations.MigrationsDomainCommand.Execute (Aktion Befehl) ClientConnectionId: dec63212-4546-48a9-bf8e-9e2b8548fcf3 Fehler Nummer: 2714, Zustand: 6, Klasse: 16 In der Datenbank befindet sich bereits ein Objekt mit dem Namen 'AdminSettings'.

Auch in der _Migrations Tabelle in der Datenbank I gibt es keine Zeile für die Migration mit dem Namen: AdminSett

+0

Sieht so aus, als hätten Sie bereits eine "AdminSettings" -Tabelle ... Wie also ist die Tabelle 'AdminSettings' bereits in die Datenbank gelangt? – spender

+0

Es gibt nur eine Tabelle in der Datenbank namens AdminSettings und die, die ich gerade erstellt habe, also bin ich mir nicht sicher, warum es das sagt –

+0

Sie haben es manuell erstellt? Mit SQL-Anweisungen? – spender

Antwort

0

ich auf dieser Frage gestolpert, als meine Online-Azure-Datenbank, um herauszufinden, warum nicht akzeptieren würde meine Update-Befehl beschwert sich über das gleiche Problem.

Bei der Überprüfung der _EFMigrationHistory-Tabelle habe ich festgestellt, dass die Online-Datenbank mehrere Einträge für Migrationen, die bereits mit der Online-Datenbank passiert war nicht wissen (nicht sicher, warum dies ist, möglicherweise habe ich das Datapac in die Datenbank hochgeladen und nicht enthalten) die _EFMigrationHistory-Tabelle?).

In jedem Fall löste ich das Problem, indem ich alle relevanten Migrationen von myu local in die Online-Datenbank kopierte, damit EF wusste, von welcher Migration es gestartet werden sollte.

Verwandte Themen