Cuando intenté actualizar (construir tablas a partir de modelos) la base de datos PostgreSQL por primera vez, detecté esta excepción:
dotnet ef database updateNpgsql.NpgsqlException (0x80004005): Código de mensaje desconocido: 74 en Npgsql.Util.PGUtil.ValidateBackendMessageCode (código BackendMessageCode) en C:\projects\npgsql\src\Npgsql\Util\PGUtil.cs:line 63 en Npgsql.NpgsqlConnector.< >c__DisplayClass160_0.<g__ReadMessageLong|0>d.MoveNext() en C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 894 --- Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción --- en Npgsql .NpgsqlConnector.Authenticate(String nombre de usuario, NpgsqlTimeout timeout, Boolean async) en C:\projects\npgsql\src\Npgsql\NpgsqlConnector.Auth.cs:line 22 en Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken) en C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 393 en Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<g__OpenLong|0>d.MoveNext() en C:\projects\npgsql\src\Npgsql\NpgsqlConnection .cs:línea 241 --- Fin del seguimiento de la pila desde la ubicación anterior donde se lanzó la excepción --- en Npgsql.NpgsqlConnection.Open() en C:\proj ects\npgsql\src\Npgsql\NpgsqlConnection.cs:línea 119 en Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() en Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists() en Microsoft.EntityFrameworkCore.Migrations.Internal .Migrator.Migrate(String targetMigration) en Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) en Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType) en Microsoft.EntityFrameworkCore.Design .OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0() en Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Acción acción) Código de mensaje desconocido: 74
desafortunadamente, no pude encontrar ninguna pista sobre esta excepción y, como puede ver, la excepción no está del todo clara.
Después de horas de investigación y de leer errores similares y estudiar el código fuente de PGUtil.cs , sospeché del problema de comunicación.
y Bingos. la raíz del problema fue el número de puerto incorrecto cometido por mi colega.
public class IdentityResourceContextFactory : IDesignTimeDbContextFactory<IdentityResourceContext> { public IdentityResourceContext CreateDbContext(string[] args) { var optionsBuilder = new DbContextOptionsBuilder<IdentityResourceContext>(); optionsBuilder.UseNpgsql("Username=postgres;Password=p@$$word;Host=localhost;Port=3306;Database=Identity;"); return new IdentityResourceContext(optionsBuilder.Options); } }Cuando cambié el número de puerto al correcto todo va bien:
Username=postgres;Password=p@$$word;Host=localhost;Port=5432;Database=Identity;Sé que podría no estar relacionado con el mensaje de excepción y por eso lo comparto aquí.