c# এটি বন্ধ করার আগে কি আমাকে একটি SQLConnection বন্ধ করতে হবে?




asp.net using (7)

না, SqlConnection ক্লাস IDISposable থেকে উত্তরাধিকারী, এবং যখন (সংযোগের বস্তুর জন্য) ব্যবহার শেষ হয়ে গেলে, এটি স্বয়ংক্রিয়ভাবে SqlConnection ক্লাসে নিষ্পত্তিকে কল করে।

ডিসপোজেবল অবজেক্ট সম্পর্কে আমার অন্য প্রশ্নে , আমরা কি বন্ধ ব্লকটি বন্ধ করার আগে কল করা উচিত?

using (SqlConnection connection = new SqlConnection())
using (SqlCommand command = new SqlCommand())
{
    command.CommandText = "INSERT INTO YourMom (Amount) VALUES (1)";
    command.CommandType = System.Data.CommandType.Text;

    connection.Open();
    command.ExecuteNonQuery();

    // Is this call necessary?
    connection.Close();
}

প্রতিফলক ব্যবহার করে, আপনি দেখতে পারেন যে SqlConnection এর Dispose পদ্ধতিটি আসলে Close() ;

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }
    this.DisposeMe(disposing);
    base.Dispose(disposing);
}


না, নিষ্পত্তি করার আগে একটি সংযোগ বন্ধ করার প্রয়োজন নেই।

কিছু বস্তু, (এসকিউএল কানেকশনগুলির মত) আবার ফোনিং বন্ধ করতে ব্যবহার করা যেতে পারে, তবে ডিসপ্লে করার পরে নয়। অন্যান্য বস্তুর জন্য বন্ধ কলিং ডিসপ্লে হিসাবে একই হয়। (ম্যানুয়াল রিসেটভেন্ট এবং স্ট্রিম আমি এই মত আচরণ মনে করি)


না, ব্লক কলগুলি ব্যবহার করা আপনার পক্ষে কোনওভাবে Dispose() , সুতরাং Close() কে কল করার প্রয়োজন নেই।


যেহেতু আপনার কাছে একটি ব্যবহার ব্লক রয়েছে, SQLCommand এর নিষ্পত্তি পদ্ধতি বলা হবে এবং এটি সংযোগটি বন্ধ করবে:

// System.Data.SqlClient.SqlConnection.Dispose disassemble
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }
    this.DisposeMe(disposing);
    base.Dispose(disposing);
}

ব্যবহার করা শব্দটি সঠিকভাবে সংযোগটি বন্ধ করবে তাই বন্ধ করার জন্য অতিরিক্ত কলটি প্রয়োজন হয় না।

এসকিউএল সার্ভার সংযোগ পুলিং উপর এমএসডিএন নিবন্ধ থেকে:

"আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি যখন এটি ব্যবহার করে শেষ করেন তখন সংযোগটি বন্ধ করুন যাতে সংযোগটি পুলে ফিরিয়ে দেওয়া হয়। আপনি সংযোগ বস্তুর বন্ধ বা নিষ্পত্তি পদ্ধতিগুলি ব্যবহার করে অথবা এটির মধ্যে সমস্ত সংযোগ খোলার মাধ্যমে এটি করতে পারেন। সি # এ বিবৃতি ব্যবহার করে "

SqlConnection বাস্তব বাস্তবায়ন। নেট প্রতিফলক ব্যবহার করে নিষ্পত্তি করুন:

// System.Data.SqlClient.SqlConnection.Dispose disassemble
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }
    this.DisposeMe(disposing);
    base.Dispose(disposing);
}




sqlcommand