1
resposta

[Bug] Alguém sabe como conserta esse erros que esta rolando?

Erro ao fazer o Update-Databse para atualizar a coluna ArtistasId da tabela Musicas

Estou fazendo update usando o migrations com esse script sql "UPDATE Musicas SET ArtistasId = 1 WHERE MusicaId = 1

no metodo up da classe que herda Migration

eu implemento dessa forma

migrationBuilder.Sql("UPDATE Musicas SET ArtistasId = 1 WHERE MusicaId = 1");

Quando eu Faço o comando Update-Database no console gera esse erro

Failed executing DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] UPDATE Musicas SET ArtistasId = 1 WHERE MusicaId = 1 Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'MusicaId'. at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite) at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName) at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues) 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.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) ClientConnectionId:70ca3833-f522-4d04-84b7-113696bb161f Error Number:207,State:1,Class:16 Invalid column name 'MusicaId'.

1 resposta

Olá, Carlos.

Tudo bem?

Parece que você está enfrentando um problema com a coluna 'MusicaId' na sua tabela 'Musicas'. O erro que você está vendo, "Invalid column name 'MusicaId'", indica que essa coluna não existe na tabela 'Musicas'.

Dado o contexto da aula/exercício, parece que você está tentando atualizar a coluna 'ArtistasId' na tabela 'Musicas' para cada música já cadastrada. No entanto, o comando SQL que você está usando para fazer isso está referenciando a coluna 'MusicaId', que, de acordo com o erro, não existe na tabela 'Musicas'.

Por isso, eu sugiro que você verifique se a coluna 'MusicaId' realmente existe na tabela 'Musicas'. Você pode fazer isso executando uma consulta SQL como 'SELECT * FROM Musicas' para ver todas as colunas dessa tabela.

Se a coluna 'MusicaId' não existir, você precisará ajustar o seu comando SQL para referenciar a coluna correta. Por exemplo, se a coluna que identifica cada música na tabela 'Musicas' se chamar 'Id', o seu comando SQL ficaria assim:

migrationBuilder.Sql("UPDATE Musicas SET ArtistasId = 1 WHERE Id = 1");

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos!