শেষ হতে 30 সেকেন্ডের বেশি সময় লাগে এমন কোনও ফাংশন আমদানি ব্যবহার করার সময় আমি সত্ত্বা ফ্রেমওয়ার্ক (EF) ব্যবহার করে টাইমআউটগুলি পাচ্ছি। আমি নিম্নলিখিতগুলি চেষ্টা করে দেখেছি এবং এই সমস্যাটি সমাধান করতে সক্ষম হইনি:
আমি এখানে প্রস্তাবিত EDMX ফাইল রয়েছে এমন প্রকল্পের App.Config ফাইলের Default Command Timeout=300000সংযোগের স্ট্রিংয়ে যুক্ত করেছি ।
এটি আমার সংযোগের স্ট্রিংয়ের মতো দেখাচ্ছে:
<add
name="MyEntityConnectionString"
connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|
res://*/MyEntities.msl;
provider=System.Data.SqlClient;provider connection string="
Data Source=trekdevbox;Initial Catalog=StarTrekDatabase;
Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock;
MultipleActiveResultSets=True;Default Command Timeout=300000;""
providerName="System.Data.EntityClient" />
আমি সরাসরি আমার সংগ্রহস্থলে কমান্ডটাইমআউট সেট করার চেষ্টা করেছি:
private TrekEntities context = new TrekEntities();
public IEnumerable<TrekMatches> GetKirksFriends()
{
this.context.CommandTimeout = 180;
return this.context.GetKirksFriends();
}
সময় নির্ধারণের সময় থেকে EF পেতে আমি আর কী করতে পারি? এটি কেবল খুব বড় ডেটাসেটের জন্যই ঘটে। ছোট ডেটাসেটের সাহায্যে সবকিছু ঠিকঠাক কাজ করে।
আমি যে ত্রুটিগুলি পাচ্ছি তার মধ্যে একটি এখানে রয়েছে:
System.Data.EntityCommandExecutionException: কমান্ড সংজ্ঞা কার্যকর করতে গিয়ে একটি ত্রুটি ঘটেছে। বিশদ জন্য অভ্যন্তরীণ ব্যতিক্রম দেখুন। ---> System.Data.SqlClient.SqlException: সময়সীমা শেষ হয়ে গেছে। অপারেশন শেষ হওয়ার আগে সময়সীমা পেরিয়ে গেছে বা সার্ভার সাড়া দিচ্ছে না।
ঠিক আছে - আমি এই কাজ পেয়েছিলাম এবং এটি কি নির্বোধ ছিল। আমি উভয় সংযোগ স্ট্রিং ছিল Default Command Timeout=300000এবং CommandTimeout 180. সেট যখন আমি মুছে Default Command Timeoutসংযোগ স্ট্রিং থেকে, এটা কাজ করে। সুতরাং উত্তরটি হ'ল ম্যানুয়ালি আপনার কনটেক্সট অবজেক্টে আপনার সংগ্রহস্থলে কমান্ডটাইমআউট সেট করুন:
this.context.CommandTimeout = 180;
স্পষ্টতই সংযোগের স্ট্রিংয়ে টাইমআউট সেটিংস সেট করার কোনও প্রভাব নেই।
"স্ট্রিং ছেড়ে দিন ।
NONCLUSTEREDকয়েকটি সারণীতে সূচি যোগ করতে হবে, এটি আমাদের জন্য সময়সীমা সমাধান করেছে।