При первом обновлении базы данных я получаю сообщение об ошибке
System.Net.Sockets.SocketException (10061): Соединение не может быть установлено, поскольку целевой компьютер активно отказал ему.
в Npgsql.NpgsqlConnector.Connect (тайм-аут NpgsqlTimeout)
в Npgsql.NpgsqlConnector.RawOpen (таймаут NpgsqlTimeout, логический асинхронный, CancellationToken cancellationToken)
в Npgsql.NpgsqlConnector.Open (тайм-аут NpgsqlTimeout, логический асинхронный, CancellationToken cancellationToken)
в Npgsql.NpgsqlConnection. <> c__DisplayClass32_0. d.MoveNext ()
--- Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение ---
в Npgsql.NpgsqlConnection.Open ()
в Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists ()
в Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists ()
в Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate (String targetMigration)
в Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase (String targetMigration, String contextType)
в Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute (Действие действия)
Невозможно установить соединение, поскольку целевая машина активно от него отказалась.
Я использую Docker Toolbox для младшего компьютера. И я запустил контейнер postgres с командой:
docker run --name pg -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres;
Для подключения EF Core к pgsql я использовал пакет Nget Npgsql и connectionString
"Server=127.0.0.1;Port=5432;Database=postgres;Username=postgres;Password=password"
Далее я создал в файле MyDbContext
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
}
public class MyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
{
public MyDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseNpgsql("Server=127.0.0.1;Port=5432;Database=postgres;Username=postgres;Password=password");
return new MyDbContext(optionsBuilder.Options);
}
}
После чего я добавил dbContext в классе запуска
public void ConfigureServices(IServiceCollection services, IConfiguration config)
{
services.AddDbContext<Models.MyDbContext>();
Кто-нибудь может мне помочь или предложить то, что я мог пропустить?