DBContext initing throws SocketException

0

I'm learning ef core and using it with PostresSQL. My project have following versions of packages:

Npgsql.EntityFrameworkCore.PostgreSQL 2.2.4
Microsoft.EntityFrameworkCore 2.2.6
code of context:

using Shared;
using Shared.Gameplay.Organizations;

using Microsoft.EntityFrameworkCore;

namespace Server
{
    public class ApplicationContext : DbContext
    {
        private static ApplicationContext _context;

        public static ApplicationContext Instance
        {
            get
            {
                if (_context == null)
                    _context = new ApplicationContext();
                return _context;
            }
        }
        public DbSet<User> Users { get; set; }

        public DbSet<VehicleState> Vehicles { get; set; }

        public DbSet<OrganizationBase> Organizations { get; set; }

        public ApplicationContext()
        {
            Database.EnsureDeleted();
            Database.EnsureCreated();
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<IPenalty>()
                .ToTable("Penalties")
                .HasDiscriminator<int>("PenaltyType")
                .HasValue<WarnPenalty>(1)
                .HasValue<BanPenalty>(2);

            modelBuilder.Entity<User>()
                .HasMany(x => x.Penalties)
                .WithOne(p => p.Player);
            modelBuilder.Entity<OrganizationBase>().Ignore(o => o.Actions);
        }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=usersdb;Username=postgres;Password=root", options =>
            {
                options.UseAdminDatabase("postgres");
            });
        }
    }
}

Following code:

var db = ApplicationContext.Instance;

throws exceptions:

Npgsql.PostgresException (0x80004005): 3D000: ���� ������ "usersdb" �� ����������
   at void Npgsql.NpgsqlConnector+<>c__DisplayClass161_0+<<ReadMessage>g__ReadMessageLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 1003
   at void Npgsql.NpgsqlConnector+<>c__DisplayClass161_0+<<ReadMessage>g__ReadMessageLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 1032
   at async Task Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, bool async, CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 425
   at void Npgsql.NpgsqlConnection+<>c__DisplayClass32_0+<<Open>g__OpenLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnection.cs:line 273
   at void System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (10035): Операция на незаблокированном сокете не может быть завершена немедленно [::1]:5432
   at void System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
(SocketException: A non-blocking socket operation could not be completed immediately [::1]:5432)

but after all opeartions seems to work succesfully and objects are created in DB. Why is this happening and how to fix it?

c#
postgresql
.net-core
npgsql
ef-core-2.2
asked on Stack Overflow Dec 13, 2019 by FoxPro • edited Dec 13, 2019 by FoxPro

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0