একটি মুক্ত সংযোগ থাকা এবং এটি ক্লাসগুলির মধ্যে পাস করা সাধারণত একটি খারাপ ধারণা। অবশ্যই, সংযোগ খোলার বিষয়টি বেশ কার্যকারিতা হিট, তবে ইতিমধ্যে খোলা সংযোগগুলি পুনরায় ব্যবহার করে কানেকশন পুল দ্বারা এটি ইতিমধ্যে যত্ন নেওয়া হয়েছে। যদিও একটি মন্তব্য: সর্বদা কল করার জন্য যতক্ষণ সম্ভব অপেক্ষা করুন connection.Open()
, বিশেষত মাল্টিথ্রেডেড কোড থেকে এটি আপনার পদ্ধতির সাথে সংযোগটি বরাদ্দ করবে (যা সম্ভবত ডেটাবেজে মুক্ত সংযোগের প্রয়োজনীয় পরিমাণ বাড়িয়ে তুলবে)।
আপনার ক্লাসগুলি যথাসম্ভব জেনেরিক করে তুলতে, আমি আইডিবি সংযোগের সাথে কোনও পদ্ধতির সংস্পর্শে বেস ক্লাস করার পরামর্শ দিচ্ছি এবং আপনার সংগ্রহস্থলগুলিতে আরও জেনেরিক বাস্তবায়ন হবে।
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();
...
}
}
}