Update-Datenbank von Package Manager Console fehlgeschlagen. Ich habe Entity Framework 6.x und Code-First-Ansatz verwendet. Fehler ist
"In der Datenbank befindet sich bereits ein Objekt mit dem Namen 'AboutUs'."
Wie kann ich dieses Problem lösen?
internal sealed class Configuration
: DbMigrationsConfiguration<Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
}
protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context)
{
}
}
Mein DbContext ist:
public class JahanBlogDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public JahanBlogDbContext()
: base("name=JahanBlogDbConnectionString")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<JahanBlogDbContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Comment>().HasRequired(t => t.Article).WithMany(t => t.Comments).HasForeignKey(d => d.ArticleId).WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<UserRole>().ToTable("UserRole");
modelBuilder.Entity<UserLogin>().ToTable("UserLogin");
modelBuilder.Entity<UserClaim>().ToTable("UserClaim");
}
public virtual DbSet<Article> Articles { get; set; }
public virtual DbSet<ArticleLike> ArticleLikes { get; set; }
public virtual DbSet<ArticleTag> ArticleTags { get; set; }
public virtual DbSet<AttachmentFile> AttachmentFiles { get; set; }
public virtual DbSet<Comment> Comments { get; set; }
public virtual DbSet<CommentLike> CommentLikes { get; set; }
public virtual DbSet<CommentReply> CommentReplies { get; set; }
public virtual DbSet<ContactUs> ContactUs { get; set; }
public virtual DbSet<Project> Projects { get; set; }
public virtual DbSet<ProjectState> ProjectStates { get; set; }
public virtual DbSet<ProjectTag> ProjectTags { get; set; }
public virtual DbSet<Rating> Ratings { get; set; }
public virtual DbSet<Tag> Tags { get; set; }
public virtual DbSet<AboutUs> AboutUs { get; set; }
}
Paketverwaltungskonsole:
PM> update-database -verbose -force
Using StartUp project 'Jahan.Blog.Web.Mvc'.
Using NuGet project 'Jahan.Blog.Web.Mvc'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'Jahan-Blog' (DataSource: (local), Provider: System.Data.SqlClient, Origin: Configuration).
No pending explicit migrations.
Applying automatic migration: 201410101740197_AutomaticMigration.
CREATE TABLE [dbo].[AboutUs] (
[Id] [int] NOT NULL IDENTITY,
[Description] [nvarchar](max),
[IsActive] [bit] NOT NULL,
[CreatedDate] [datetime],
[ModifiedDate] [datetime],
CONSTRAINT [PK_dbo.AboutUs] PRIMARY KEY ([Id])
)
System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'AboutUs' in the database.
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)
at 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)
at 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)
at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement, DbInterceptionContext interceptionContext)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass30.<ExecuteStatements>b__2e()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements, DbTransaction existingTransaction)
at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, Boolean downgrading, Boolean auto)
at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean downgrading)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean downgrading)
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
ClientConnectionId:88b66414-8776-45cd-a211-e81b2711c94b
There is already an object named 'AboutUs' in the database.
PM>
database
entity-framework
ef-code-first
entity-framework-6
ef-migrations
Sagte Roohullah Allem
quelle
quelle
Antworten:
Es scheint, dass ein Problem im Migrationsprozess vorliegt. Führen Sie den Befehl add-migration in "Package Manager Console" aus:
Nehmen Sie einige Änderungen vor und aktualisieren Sie dann die Datenbank aus der "Initial" -Datei:
Bearbeiten: -IgnoreChanges ist in EF6, aber nicht in EF Core. Hier ist eine Problemumgehung: https://stackoverflow.com/a/43687656/495455
quelle
Vielleicht haben Sie den Namespace in Ihrem Projekt geändert!
In Ihrer Datenbank befindet sich eine Tabelle mit dem Namen
dbo.__MigrationHistory
. Die Tabelle hat eine Spalte mit dem NamenContextKey
.Der Wert dieser Spalte basiert auf Ihrem
namespace
. zum Beispiel ist "DataAccess.Migrations.Configuration
".Wenn Sie den Namespace ändern, werden doppelte Tabellennamen mit unterschiedlichen Namespaces verursacht.
Nachdem Sie den Namespace auf der Codeseite geändert haben, ändern Sie auch den Namespace in dieser Tabelle in der Datenbank (für alle Zeilen).
Wenn Sie beispielsweise den Namespace in ändern
EFDataAccess
, sollten Sie die Werte derContextKey
Spalte indbo.__MigrationHistory
"EFDataAccess.Migrations.Configuration
" ändern .Verwenden Sie dann auf der Codeseite in Tools => Package Manager Console den
update-database
Befehl.Eine andere Option, anstatt den Kontextwert in der Datenbank zu ändern, besteht darin, den Kontextwert in Ihrem Code fest auf den alten Namespace-Wert zu codieren. Dies ist möglich, indem Sie erben
DbMigrationsConfiguration<YourDbContext>
und im Konstruktor einfach den alten Kontextwert zuweisenContextKey
, dann vonMigrateDatabaseToLatestVersion<YourDbContext, YourDbMigrationConfiguration>
dieser Klasse erben und leer lassen. Als letztes müssen SieDatabase.SetInitializer(new YourDbInitializer());
Ihren DbContext in einem statischen Konstruktor aufrufen.Ich hoffe, Ihr Problem wird behoben.
quelle
MigrationHistory
Tabelle nicht für mich behoben ... also habe ich alle meine Tabellen gelöscht und EF sie alle erneut erstellen lassen, kleine App, keine große Sache. ..aber es hat es für mich behoben.Diese Ausnahme zeigt an, dass jemand der Datenbank bereits ein Objekt mit dem Namen "AboutUs" hinzugefügt hat.
AutomaticMigrationsEnabled = true;
kann dazu führen, da Datenbankversionen in diesem Fall nicht von Ihnen kontrolliert werden. Um unvorhersehbare Migrationen zu vermeiden und sicherzustellen, dass jeder Entwickler im Team mit derselben Datenbankstruktur arbeitet, schlage ich vor, dass Sie diese festlegenAutomaticMigrationsEnabled = false;
.Automatische Migrationen und codierte Migrationen können nebeneinander stehen, wenn Sie sehr vorsichtig sind und der einzige Entwickler in einem Projekt sind.
Es gibt ein Zitat aus dem Beitrag "Automatische Code-Erstmigrationen" im Data Developer Center :
quelle
In meinem Fall wurde mein
EFMigrationsHistory
Tisch (irgendwie) geleert und beim Versuch zu rennen bekamupdate-database
ich:Nachdem die Tabelle geleert wurde, war es sinnvoll, die anfängliche Migration erneut auszuführen und die Tabellen neu zu erstellen.
Um dieses Problem zu beheben, habe ich meiner
EFMigrationsHistory
Tabelle Zeilen hinzugefügt . 1 Zeile für jede Migration, von der ich wusste, dass die Datenbank auf dem neuesten Stand ist.Eine Zeile hat 2 Spalten:
MigrationId
undProductVersion
MigrationId
ist der Name Ihrer Migrationsdatei. Beispiel:20170628112345_Initial
ProductVersion
ist die ef-Version, die Sie ausführen. Sie finden dies, indem SieGet-Package
in die Package Manager-Konsole tippen und nach Ihrem ef-Paket suchen.Hoffe das ist hilfreich für jemanden.
quelle
In meinem Fall hatte ich die Assembly, die das Code-First-Entity-Framework-Modell enthielt, umbenannt. Obwohl sich das eigentliche Schema in der aufgerufenen Migrationstabelle überhaupt nicht geändert hatte
enthält eine Liste bereits durchgeführter Migrationen basierend auf dem alten Assemblynamen. Ich habe den alten Namen in der Migrationstabelle so aktualisiert, dass er mit dem neuen übereinstimmt, und die Migration hat dann wieder funktioniert.
quelle
Stellen Sie sicher, dass Ihr Lösungsstartprojekt die richtige Verbindungszeichenfolge in der Konfigurationsdatei hat. Oder legen Sie den Parameter -StartUpProjectName fest, wenn Sie den Befehl update-database ausführen. Der Parameter -StartUpProjectName gibt die Konfigurationsdatei an, die für benannte Verbindungszeichenfolgen verwendet werden soll. Wenn nicht angegeben, wird die Konfigurationsdatei des angegebenen Projekts verwendet.
Hier ist ein Link für ef-migrationsbefehlsreferenzen http://coding.abel.nu/2012/03/ef-migrations-command-reference/
quelle
Ich hatte das gleiche Problem und nach drei Stunden Kampf finde ich heraus, was los ist
In meinem Fall, wenn ich zum ersten Mal in der
up()
Methode migrieren wollte, möchte der Standardcode die bereits vorhandenen Tabellen erstellen, sodass ich den gleichen Fehler wie Sie erhalten habeUm es zu lösen, löschen Sie einfach den Code und schreiben Sie, was Sie wollen. Zum Beispiel wollte ich eine Spalte hinzufügen, damit ich nur schreibe
quelle
@
gefolgt von meinem Benutzernamen in den Kommentaren ein.Hinweis: Nicht empfohlene Lösung. aber in einigen Fällen schnelle Lösung.
Für mich
dbo._MigrationHistory
fehlten in der Produktionsdatenbank Migrationsdatensätze während des Veröffentlichungsprozesses, aber die Entwicklungsdatenbank hatte alle Migrationsdatensätze.Wenn Sie sicher sind, dass die Produktionsdatenbank im Vergleich zur Entwicklungsdatenbank das gleiche und neueste Schema hat, kann das Problem durch Kopieren aller Migrationsdatensätze in die Produktionsdatenbank behoben werden.
Sie können nur mit VisualStudio arbeiten.
dbo._MigrationHistory
Tabelle in der Quelldatenbank (in meinem Fall dev db)> Klicken Sie auf das Menü "Datenvergleich ...".Beachten Sie, dass dies auch bei komplexen und seriösen Projekten nicht empfohlen wird. Verwenden Sie diese Option nur, wenn Sie Probleme beim Lernen von ASP.Net oder EntityFramework haben.
quelle
Löschen Sie Zeilen aus der Tabelle dbo_MigrationHistory oder löschen Sie die Tabelle und führen Sie sie aus
Es werden alle Migrationen in Ihrem Projekt einzeln ausgeführt
quelle
In meinem Fall war das Problem in Seeder. Ich habe _ctx.Database.EnsureCreated () darin aufgerufen und soweit ich verstanden habe, wurde der Befehl zum Aktualisieren der Datenbank erfolgreich ausgeführt, aber dann hat Seeder versucht, die Datenbank "zum zweiten Mal" zu erstellen.
Wie zu adressieren:
quelle
Ein weiteres Edge-Case-EF-Core-Szenario.
Überprüfen Sie, ob Sie eine Datei Migrations / YOURNAMEContextModelSnapshot.cs haben .
wie in - https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#create-a-migration beschrieben
Wenn Sie versucht haben, Ihre Datenbank manuell neu zu erstellen, indem Sie die Dateien migration.cs löschen, achten Sie darauf, dass Ihre Datei Migrations / * ContextModelSnapshot.cs noch vorhanden ist.
Ohne diese Option haben Ihre nachfolgenden Migrationen keinen Snapshot, mit dem Sie die erforderlichen Unterschiede erstellen können, und Ihre neuen Migrationsdateien sehen so aus, als würden sie alles von Grund auf neu erstellen. Anschließend wird der vorhandene Tabellenfehler wie oben angezeigt.
quelle
Das gleiche passierte mit mir. Das Problem war, dass ich tatsächlich meine Datenbanktabelle gelöscht
MoviesCast
und eine neue Tabelle erstellt habe. Das Problem war, dass meine letzte Migration versuchte, die gelöschte TabelleMoviesCast
in der Datenbank zu induzieren . Ich habe es gelöst, indem ich einfach den gesamten Inhalt der letzten Migration entfernt und einfach die Up () & down () -Methode ausgeführt habeAktualisieren Sie dann die Datenbank und fügen Sie einfach eine neue Migration hinzu
quelle
Ich hatte das gleiche Problem in der Antwort beschrieben, die Elnaz gab. Ich musste den Namespace der Datenschicht während eines Refactorings unseres Projekts ändern. Dies führte dazu, dass die Migrationen die vorhandenen Migrationen nicht in der Datenbank sahen. Ich habe eine ausgezeichnete Antwort auf dieses Problem gefunden, das James Chambers gebloggt hat.
http://jameschambers.com/2014/02/changing-the-namespace-with-entity-framework-6-0-code-first-databases/
Ich habe einfach Folgendes in der Migrationskonfigurationsdatei geändert.
Hoffe, dies hilft jemand anderem in einer Bindung.
quelle
Führen Sie einfach den Befehl update-migration -Script aus. Dadurch wird ein neues * .sql-Skript generiert, das alle in der Migration enthaltenen DB-Änderungen enthält. Am Ende des Codes befinden sich Einfügebefehle wie folgt: INSERT [dbo]. [__ MigrationHistory] ([MigrationId], [ContextKey], [Model], [ProductVersion]) Sie können dies einfach ausführen. INSERT und DB werden synchronisiert
quelle
Nachdem ich mehr als eine Stunde lang keine Ergebnisse erhalten hatte, versuchte ich einen anderen Ansatz, ohne Migrationen, aber ich führte einen Schemavergleich durch.
In Visual Studio -> Tools -> SQL Server -> Neuer Schema-Vergleich
Zuerst habe ich eine neue, völlig neue Datenbank mit EF-Migrationen erstellt. Dann habe ich einen Vergleich durchgeführt und die neue Datenbank mit der verglichen, die ich aktualisieren wollte. Schließlich wurde ein Migrationsskript generiert, und ich konnte ein Schema-Update durchführen.
quelle
In meinem Fall (möchten zurücksetzen und eine neue Datenbank erhalten),
Zuerst habe ich die Fehlermeldung bekommen:
There is already an object named 'TABLENAME' in the database.
und ich sah ein wenig vorher:
Meine Datenbank wurde erstellt, aber kein Datensatz im Migrationsverlauf.
Ich lösche alle Tabellen außer dbo .__ MigrationsHistory
MigrationsHistory war leer.
Lauf
dotnet ef database update -c StudyContext --verbose
(--verbose nur zum Spaß)
und bekam
Done.
quelle
Ich hatte den gleichen Fehler wie unten. Dann habe ich es wie folgt behoben:
dotnet ef migrations list
dotnet ef migrations remove
4. Jetzt ist es gut. Versuchen Sie erneut hinzuzufügen:
dotnet ef migrations add [new_dbo_name]
5. Versuchen Sie abschließend erneut, die Aktualisierung auf der Grundlage der Migrationsliste erneut durchzuführen:
dotnet ef database update [First]
dotnet ef database update [Second]
dotnet ef database update [new_dbo_name]
Hoffe es ist hilfreich für dich. ^^
quelle
Sie haben den Migrationsordner gelöscht, als Sie versuchen, den Befehl "update-database" auf der Package Manager-Konsole auszuführen? wenn ja
Löschen Sie einfach alle Ihre Tabellen manuell als ausgeführt, wenn update-database (Nachteile-Seed-Daten werden gelöscht)
quelle
Eine andere Möglichkeit, dies zu tun, besteht darin, alles in der Anfangsklasse zwischen den Up- und Down-Methoden zu kommentieren. Führen Sie dann die Update-Datenbank aus, nachdem die Seed-Methode erfolgreich ausgeführt wurde. Führen Sie die Update-Datenbank erneut aus. Dies ist möglicherweise für einige Freunde hilfreich.
quelle
Ich stand vor dem gleichen Problem. Ich habe die folgende Lösung ausprobiert: 1. Löscht den Tabellencode von Up () und den zugehörigen Code von der Down () -Methode. 2. Führen Sie den Befehl update-database in Package Manager Consol aus
Das hat mein Problem gelöst
quelle
Hinweis: Ich habe es getan, weil ich nichts in meiner Datenbank habe. In meinem Fall: 1. Ich habe eine Migration mit dem Befehl remove-migration in der Package Manager-Konsole entfernt. 2. Die Datenbank wurde im Bereich "SQL Server-Objekt-Explorer"> in der aktuellen Datenbank entfernt.> Klicken Sie mit der rechten Maustaste auf> Entfernen. 3. Migrieren Sie in die Package Manager-Konsole. Schreiben Sie Hinzufügen -Migration und klicken Sie auf Enter 4. Das letzte Update per Befehl update-database
quelle
Gleicher Fall (keine DB- und MigrationHistory-Tabelle auf dem Server). Meine Schritte:
quelle
Fragen Sie in der Datenbank die Tabelle __MigrationHistory ab und kopieren Sie [ContextKey].
Fügen Sie es wie folgt in den DbMigrationsConfiguration ConextKey ein
quelle
Die folgenden Schritte haben bei mir für dasselbe Problem funktioniert:
Szenario:
Ich habe versucht, meinem vorhandenen Modell für die E-Mail-Funktionalität zwei neue Felder hinzuzufügen. Die neuen Felder sind "IsEmailVerified" und "ActivationCode".
Schritte, die ich befolgt habe:
1. Löschte alte Migrationsdateien im Ordner "Migrationen", die mich daran hinderten, die Update-Datenbank durchzuführen. 2. Alle meine letzten Änderungen, die ich am Modell vorgenommen habe, wurden wiederholt
3. Führen Sie den folgenden Befehl aus:
Add-Migration -ConnectionProviderName System.Data.SqlClient -ConnectionString "Datenquelle = DESKTOP \ SQLEXPRESS; Erstkatalog = Benutzerdefiniert; Sicherheitsinformationen beibehalten = True; Benutzer-ID = sa; Kennwort = **** "
4. Löschte den Inhalt der Methoden Up () und Down () aus der Migrationsdatei und ließ die Methoden leer
5. Führen Sie den folgenden Befehl aus:
Update-Datenbank -ConnectionProviderName System.Data.SqlClient -ConnectionString "Datenquelle = DESKTOP \ SQLEXPRESS; Erstkatalog = Benutzerdefiniert; Sicherheitsinformationen beibehalten = True; Benutzer-ID = sa; Kennwort = " ***
Nachdem der obige Schritt ausgeführt wurde, sehen Modell und Datenbank synchron aus.
Jetzt habe ich die neuen Eigenschaften im Modell hinzugefügt
Führen Sie den folgenden Befehl aus:
Add-Migration -ConnectionProviderName System.Data.SqlClient -ConnectionString "Datenquelle = DESKTOP \ SQLEXPRESS; Erstkatalog = Benutzerdefiniert; Sicherheitsinformationen beibehalten = True; Benutzer-ID = sa; Kennwort = " ***
Jetzt enthält die Migrationsdatei nur meine letzten Änderungen wie folgt:
Führen Sie den folgenden Befehl aus: Update-Database -ConnectionProviderName System.Data.SqlClient -ConnectionString "Datenquelle = DESKTOP \ SQLEXPRESS; Erstkatalog = Benutzerdefiniert; Sicherheitsinformationen beibehalten = True; Benutzer-ID = sa; Kennwort = " ***
11. Jetzt habe ich die Datenbank erfolgreich mit zusätzlichen Spalten aktualisiert.
Die folgende Tabelle wurde nach den letzten Änderungen aktualisiert:
Tabelle nach der Update-Migration
quelle
Überprüfen Sie in der Migrationsdatei die Methode public Upide void Up () . Möglicherweise versuchen Sie, ein neues Datenbankobjekt zu erstellen, das sich bereits in der Datenbank befindet. Sie müssen dieses Objekt / diese Tabelle also löschen, bevor Sie das Datenbankobjekt erstellen. Mach es einfach wie unten.
Führen Sie jetzt Ihre Migration aus
Update-Database -TargetMigration: "2016_YourMigration"
quelle