Правильный ли это способ избавиться от SQLConnection

Мне было интересно, является ли моя реализация ниже наиболее эффективным способом избавиться от SQLconnection в этом случае.

Обычно я знаю, что если я использую SqlConnection напрямую, я могу просто обернуть соединение внутри блока using, чтобы удалить его автоматически, но в этом случае я хотел, чтобы соединение оставалось открытым и доступным для всех методов в классе SQLRespository .

public class SqlRepository : IRepository
{
    private readonly string connectionString;
    private SqlConnection connection;

    public SqlRepository(string connectionString)
    {
        this.connectionString = connectionString;
        connection = new SqlConnection(connectionString);
        connection.Open();
    }

    public void Method_A()
    {
      // uses the SqlConnection to fetch data
    }     

    public void Method_B()
    {
      // uses the SqlConnection to fetch data
    }     

    public void Dispose()
    {            
        connection.Dispose();
    }
}

Использование:

using (IRepository repository = new SqlRepository(connectionString))
{
   var item = repository.items;     
}

Обновление IRepository действительно реализует IDisposable

12
задан Yuval Itzchakov 22 November 2014 в 10:00
поделиться