@User99

Правильно ли я использую IDisposible C# ASP.NET Core?

Правильно ли я использую IDisposible в репозиториях, чтобы после выполнения тело using он уничтожался?

Интерфейс репозитории:
public interface IExamsRepository<T> where T:BaseEntity
    {
        Task<IList<Exam>> ShowAll();
        Task New(Exam exam);
  }

Репозитории
public class ReposExams : IExamsRepository<Exam>,IDisposible
    {
        private string connectionString;

        public ReposExams(IConfiguration configuration)
        {
            connectionString = configuration.GetValue<string>("DBInfo:ConnectionString");
        }

        internal IDbConnection Connection
        {
            get
            {
                return new NpgsqlConnection(connectionString);
            }
        }

public void Dispose()
        {
            Dispose();
        }

}

то есть достаточно ли этой строки:

public void Dispose()
{
Dispose();
}
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 2
Произошла рекурсия.
Наверное вы хотели задиспозить Connection
Ответ написан
yarosroman
@yarosroman Куратор тега C#
C# the best
А зачем тут IDispose? У вас нет неуправляемых ресурсов. NpgsqlConnection это управляемая обертка над подключением, при сборке мусора все само соберется и освободится. Конечно, если у вас высоконагруженная система, то тогда имеет смысл освобождать подключение. https://habr.com/ru/post/89720/ вот почитайте, как правильно делать.

PS и создавать подключение в репозитории, не айс, зачем DI придумали люди.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы