Açık bir bağlantıya sahip olmak ve sınıflar arasında geçirmek genellikle kötü bir fikirdir. Elbette, bir bağlantı açmak oldukça başarılı bir performanstır, ancak zaten açık bağlantıları yeniden kullanarak bağlantı havuzu tarafından halledilir. Yine de bir açıklama: her zaman aramak için mümkün olduğunca uzun süre bekleyin connection.Open()
, özellikle çok iş parçacıklı kodda, çünkü bu yöntem yönteminize bağlantı atayacaktır (veritabanına gerekli açık bağlantı miktarını potansiyel olarak artıracaktır).
Sınıflarınızı olabildiğince genel yapmak için, IDbConnection ile bir yöntem ortaya koyan bir temel sınıf olmasını tavsiye ederim ve depolarınız daha genel bir uygulamaya sahip olacaktır.
internal abstract class Repository
{
private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString;
protected IDbConnection GetConnection()
{
return new SqlConnection(ConnectionString);
}
}
public class MyRepository : Repository
{
public IEnumerable<object> Get()
{
using (var connection = GetConnection())
{
connection.Open();
...
}
}
}