Как создать новое соединение при возникновении ошибки с использованием Entity Framework 6 и npg sql? - PullRequest
0 голосов
/ 16 января 2020

Я C# разработчик, использующий Entity Framework 6, npg sql и Uni DI. В качестве заголовка я столкнулся с PostgresException при создании журнала, и мне нужно закрыть текущее соединение и воссоздать новое соединение в EF и npg sql.

вот код

public interface IPgRepo
{ 
    IDbSet<Log> Logs { get; set; }
    int SaveChanges();
    void Dispose();
}


public class PgRepo : DbContext, IPgRepo
{
    public PgRepo(string connString) : base(connString)
    {
    }

    IDbSet<Log> IPgRepo.Logs { get ; set ; }

    int IPgRepo.SaveChanges()
    {
        return SaveChanges();
    }

    void IPgRepo.Dispose()
    {
        Dispose();
    }
}

public class LogCommand
{
    private IPgRepo _repository;
    public LogCommand(IPgRepo repository)
    {
        _repository = repository;
    }

    public void AddLog(Log log)
    {
        try
        {
            _repository.Logs.Add(log);
            _repository.SaveChanges();
        }
        catch (PostgresException ex)
        {
            //todo: how to create new connection ??
            _repository.Dispose();
        }
    }
}
...