एक खुला संबंध होना और इसे कक्षाओं के बीच से गुजरना आमतौर पर एक बुरा विचार है। निश्चित रूप से, कनेक्शन खोलना काफी प्रदर्शन हिट है, लेकिन यह पहले से ही खुले हुए कनेक्शन का पुन: उपयोग करके कनेक्शन पूल द्वारा पहले से ही ध्यान रखा गया है। एक टिप्पणी हालांकि: हमेशा कॉल करने के लिए यथासंभव लंबे समय तक प्रतीक्षा करें connection.Open()
, विशेष रूप से मल्टीथ्रेड कोड में क्योंकि यह आपके तरीके से कनेक्शन प्रदान करेगा (जो संभावित रूप से डेटाबेस के लिए आवश्यक खुले कनेक्शन की मात्रा में वृद्धि करेगा)।
अपनी कक्षाओं को यथासंभव सामान्य बनाने के लिए, मैं एक बेस क्लास को IDbConnection के साथ एक विधि को उजागर करने की सलाह दूंगा, और आपकी रिपॉजिटरी में अधिक सामान्य कार्यान्वयन होगा।
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();
...
}
}
}