Мне было интересно, является ли моя реализация ниже наиболее эффективным способом избавиться от 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