Stavo aggiornando il mio database tramite la riga di comando, ma poi ho aggiornato manualmente una delle mie tabelle.
Questo sembra aver interrotto la mia capacità di aggiornamento del database. Ricevo il seguente errore quando provo ad aggiornare:
System.Data.SqlClient.SqlException: There is already an object named 'ClientsAndTestimonials' in the database. at System.Data.SqlClient.SqlConnection.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, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean openConnection, Boolean closeConnection)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues, Boolean manageConnection)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Tools.Cli.DatabaseUpdateCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
ClientConnectionId:d89989a8-ce8b-4167-be7e-fcddc4bcdf98
Error Number:2714,State:6,Class:16
There is already an object named 'ClientsAndTestimonials' in the database.
Ho cercato di risolvere questo problema negli ultimi giorni. La maggior parte dei colleghi sviluppatori suggerisce alcune varianti dell'utilizzo di Add-migration "Reset" -IgnoreChanges, come John Salewski dal seguente link .
Tuttavia, continuo a ricevere un errore che dice "Impossibile trovare un parametro che corrisponda al nome del parametro 'IgnoreChanges'".
Ogni suggerimento sarà molto apprezzato!
Innanzitutto, non è EF 6, è EF Core. Al momento non ci sono -IgnoreChanges in EF Core (vedi qui ) ma puoi ottenere l'equivalente commentando tutto il codice nel metodo Up () e applicando la migrazione. Ciò richiederà un'istantanea dello stato del modello corrente in modo che le migrazioni successive includano solo le modifiche da quel punto in avanti.
Pertanto, se hai appena apportato alcune modifiche al modello incrementale e non hai questa linea di base iniziale, potrebbe essere necessario rimuovere tali modifiche, applicare la migrazione di base, quindi aggiungere nuovamente le modifiche e aggiungere una seconda migrazione.
Utilizzare la colonna Alter invece AddColumn nella funzione up ()
migrationBuilder.AlterColumn<bool>(
name: "IsActive",
table: "Advertisements",
nullable: false,
defaultValue: true);
O
public override void Up()
{
AddColumn("dbo.Products", "Description", c => c.String(maxLength: 50));
}
migrazione asp.net
È possibile osservare alcune parti nella funzione up se non si desidera ottenere il pieno effetto dal database.
Se il tuo comando di migrazione si è arrabbiato per averlo fatto. Ripristina e reinizializza la migrazione. Come: eliminare il contenuto della migrazione sia da Visualstudio che da SQL e add-migration
nuovamente la add-migration
e update-database