هل يتم إغلاق الاتصال عند التخلص من الأمر وتحديد الاتصال مباشرة في الأمر؟

StackOverflow https://stackoverflow.com/questions/410222

  •  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.

وآمل أن يساعد هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top