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?
User contributions licensed under CC BY-SA 3.0