ড্যাপার.নেটে কমান্ডটাইম সামঞ্জস্য করা?


92

আমি ড্যাপারের মাধ্যমে সঞ্চিত পদ্ধতির মাধ্যমে এসকিউএল ব্যাকআপগুলি চালানোর চেষ্টা করছি (আমার অ্যাপ্লিকেশনটির বাকী অংশগুলি ড্যাপার ব্যবহার করে তাই আমি এই অংশটি এর মধ্যে দিয়ে চালিয়ে যেতে পছন্দ করব)। কমান্ডটাইম আউট না হওয়া পর্যন্ত এটি ঠিক কাজ করে।

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}

আমার জানা একমাত্র কমান্ডটাইমআউট সেটিংটি হল স্কেলকম্যান্ডে। ড্যাপারের মাধ্যমে এটি সেট করার কোনও উপায় আছে কি?


4
যে কারণেই হোক না কেন, আমি এখনই নিজের প্রশ্নের উত্তর দিতে পারি না। তবে মনে হয় এটি c.Execute () এর যত্ন নেওয়ার জন্য নামযুক্ত যুক্তি "কমান্ডটাইমআউট: 0" যুক্ত করেছে adding
sh-beta

উত্তর:


106

হ্যাঁ, এক্সিকিউট ফাংশনের একাধিক সংস্করণ রয়েছে। তাদের মধ্যে একটি (বা আরও) -তে কমান্ডটাইমআউট প্যারামিটার রয়েছে:

public static int Execute(this IDbConnection cnn, string sql, 
                dynamic param = null, IDbTransaction transaction = null, 
                            int? commandTimeout = null, CommandType? commandType = null)

SqlMapper.cs থেকে নেওয়া


4
আমার একই সমস্যা ছিল, তবে ক্যোয়ারী পদ্ধতিতে, সমাধানটি এটির জন্য খুব কার্যকর হয়েছিল, কারণ এতে একটি কমান্ডটাইমআউট প্যারামিটারও রয়েছে।
jahu

4
@ ড্রিচিজো কেন এটি ব্যবহার করা হবে না, অসিঙ্ক অ্যাওয়েটের সময় শেষ এড়ানোর কোনও কারণ নেই
মৃণাল কাম্বোজ

4
@ ডিআরসিচিও ডক্স বলছে যে এটি বিগনিএক্সেকিউটরেডার যেমন অ্যাসিঙ্ক / অপেক্ষার মতো অ্যাসিনক্রোনাস পদ্ধতিতে ব্যবহৃত হয়নি। আমি ধরে নিলাম কারণ এটি যদি আপনি বিগিনি এক্সেকিউটআরডার ব্যবহার করেন তবে ধরে নেওয়া হয় আপনি নিজের সময়সীমা যুক্তি ব্যবহার করবেন।
jugg1es

4
সমস্ত প্রশ্নের জন্য এই সময়সীমা সেট করা সম্ভব? আমি চেষ্টা করেছিলাম SqlConnection.ConnectionTimeout Propertyকিন্তু এটি বলে যে এটি কেবল পঠিত। কিছু কাস্টম মাইগ্রেশন প্রোগ্রামের জন্য আমার এটির প্রয়োজন হবে। এটি প্রতিটি বিবৃতি দিয়ে টাইপ করা ক্লান্তিকর।
তাদেজ

4
@ জেদাটকিনপোর্টস স্কেলম্যাপার.সেটিংস.কম্যান্ডটাইমআউট আমার বিশ্বাস আপনি পরে যা করছেন।
শিব

59

গ্রহণযোগ্য উত্তরের সাথে মূল প্রশ্ন থেকে উদাহরণ যুক্ত হয়েছে, যদি কেউ এটি চায় তবে। (টাইমআউট 60 সেকেন্ডে সেট করা হয়েছে):

using (var c = SqlConnection(connstring))
{
    c.Open();
    var p = new DynamicParameters();
    // fill out p

    c.Execute("xp_backup_database", p, commandTimeout: 60, 
                                       commandType: CommandType.StoredProcedure);
}

6

সমস্ত প্রশ্নের / ডিবি কলগুলির জন্য কমান্ডের সময়সীমা নির্ধারণ করার দরকার নেই। আপনি নীচের মত বিশ্বব্যাপী সেট করতে পারেন।

Dapper.SqlMapper.Settings.CommandTimeout = 0;

আপনি এই স্থিতিশীল সম্পত্তিটি অ্যাপ্লিকেশন লোডে বা ডেটাবেস ক্লাস কনস্ট্রাক্টারে শুরু করতে পারেন।

এটি সদৃশ অপসারণ করতে সহায়তা করে এবং আপনি যদি পরে এটি পরিবর্তন করার সিদ্ধান্ত নেন তবে আপনি একবারে এটি পরিবর্তন করুন।


0

আমি সংযোগটি ব্যবহার করে আমার সমস্যা সমাধান করতে সক্ষম হয়েছি eryউই টাইমআউটটি সরাসরি টাইমআউট সেট করে রেখেছিল Qu

int timeOutInSeconds = 60;
.
.
.
result = conn.Query<list>(stringQuery, new {parameters, ..}, null, true, timeOutInSeconds).ToList();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.