هل يتم إغلاق الاتصال عند التخلص من الأمر وتحديد الاتصال مباشرة في الأمر؟
-
03-07-2019 - |
سؤال
أعلم أن هناك الكثير من الأمثلة حيث يتم تعريف SqlConnection ثم يتم تعريف SqlCommand، سواء في استخدام الكتل:
using (var conn = new SqlConnection(connString)) {
using (var cmd = new SqlCommand()) {
cmd.Connection = conn;
//open the connection
}
}
سؤالي:إذا قمت بتعريف الاتصال مباشرة على SqlCommand، فهل يتم إغلاق الاتصال عند التخلص من الأمر؟
using (var cmd = new SqlCommand()) {
cmd.Connection = new SqlConnection(connString);
//open the connection
}
المحلول
لا، أبدا SqlCommand يحاول إغلاق / تخلص من الاتصال.
نصائح أخرى
لا، لن يتم التخلص من كائن الاتصال إلا بعد التخلص منه بشكل صريح.لكن نصيحتي هي الاستخدام باستخدام الكتل كلما استطعت.
والنتيجة لا تقفل الاتصال، تحتاج إلى إما إغلاقه نفسك أو وضعه في الخاص باستخدام قرأه.
وهنا أيضا هو طرف لجعل كتل using
الخاص بك قليلا أكثر قابلية للقراءة:
using (var conn = new SqlConnection(connString))
using (var cmd = new SqlCommand())
{
cmd.Connection = conn;
}
وmilot
<اقتباس فقرة>ولكن توصيتي هي استخدام باستخدام كتل كلما استطعت.
اقتباس فقرة>وعن طريق عن طريق كتل جميلة ولكن غير مجدية عند العمل مع كائنات غير IDisposable وحتى هذا يمكن أن يكون مربكا إذا كنت تستخدم عن طريق كتل في أي مكان.
كن حذرا منذ الأشياء الخاصة بك قد لا يتم التخلص منها إذا لم تنفذ IDisposable.
وآمل أن يساعد هذا.