मैं एफई 6.1.0एफई DBContext कनेक्शन
मैं DBEntites
public partial class DbEntities : DbContext
{
public DbEntities()
: base("name=DbEntities")
{
////Configuration.LazyLoadingEnabled = true;
////Configuration.ProxyCreationEnabled = false;
}
//// I have ALL Entites added as below
////public virtual IDbSet<CCode> CCodes { get; set; }
}
मैं संदर्भ वस्तु पर नीचे ऑपरेशन के रूप में कस्टम DBContex वस्तु नीचे है उपयोग कर रहा हूँ बंद करने नहीं निपटाने
using (var context = new DbEntities())
{
var entitySet = context.Set<T>();
var res = entitySet.Where<T>(predicate).ToList();
if (context.Database.Connection.State == ConnectionState.Open)
{
context.Database.Connection.Close();
}
return res;
}
लेकिन संदर्भ ऑब्जेक्ट का निपटान करने के बाद भी मैं एक सक्रिय डीबी कनेक्शन देख सकता हूं। कनेक्शन स्थिति की स्थिति पर मैं देख सकता हूं कि कनेक्शन पहले ही बंद है (कनेक्शन कभी सच नहीं था)।
मैं SQL पर कनेक्शन देखने के लिए नीचे दी गई क्वेरी का उपयोग कर रहा हूं।
select db_name(dbid) , count(*) 'connections count'
from master..sysprocesses
where spid > 50 and spid != @@spid
group by db_name(dbid)
order by count(*) desc
नीचे दिए गए कथन पर एक एसक्यूएल कनेक्शन गिनती बढ़ी। लेकिन यह निपटान के बाद भी कभी नीचे नहीं था। (मेरा मतलब है कि अवरुद्ध ब्लॉक का उपयोग करने के बाद कनेक्शन बंद करना चाहिए)।
var res = entitySet.Where<T>(predicate).ToList();
किसी भी मदद की सराहना की जाएगी।
कनेक्शन पूलिंग की वजह से सबसे अधिक संभावना है: कनेक्शन खोलना और बंद करना महंगा है, इसलिए .NET में कुछ कनेक्शन हैं और उनका पुन: उपयोग होता है। https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx – Evk
मुझे उम्मीद है। लेकिन मेरे मामले में मैं एक ही कनेक्शन ऑब्जेक्ट का पुन: उपयोग नहीं कर रहा हूं। इसलिए मैं अपने लिए उपयोगी नहीं होगा। –
यह कनेक्शन _object_ का पुन: उपयोग करने के बारे में नहीं है। जब आप एक ही कॉन्फ़िगरेशन (कनेक्शन स्ट्रिंग) के साथ नया कनेक्शन बनाते हैं, तो यह वास्तव में डेटाबेस से नया कनेक्शन नहीं खुलता है, लेकिन मौजूदा एक का पुन: उपयोग करें (यदि पूल में कोई है)। जब आप कनेक्शन ऑब्जेक्ट बंद करते हैं तो वही होता है - अंतर्निहित कनेक्शन बंद नहीं किया जा सकता है बल्कि इसके बजाय पूल में डाल दिया जाता है। चूंकि आप सबसे अधिक संभावना अपने डेटाबेस के जीवनकाल के माध्यम से एक ही डेटाबेस से अधिक बार पूछेंगे - यह आपके लिए उपयोगी होगा। – Evk