Получавам изчакване, използвайки Entity Framework (EF), когато използвам импортиране на функция, което отнема над 30 секунди, за да завърши. Опитах следното и не можах да разреша този проблем:
Добавих Default Command Timeout=300000
към низа за свързване във файла App.Config в проекта, който има EDMX файла, както е предложено тук.
Ето как изглежда моят низ за връзка:
<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" />
Опитах се да настроя CommandTimeout в моето хранилище директно така:
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
от низа за свързване, той проработи. Така че отговорът е да зададете ръчно CommandTimeout във вашето хранилище на вашия контекстен обект по следния начин:
this.context.CommandTimeout = 180;
Очевидно настройването на настройките за изчакване в низа за връзка няма ефект върху него.
Намерих отговора на Ihf много полезно и аз създавам C# метод за него:
Ако
probabilityPower
е над 1, по-ниските стойности ще бъдат по-чести от по-високите стойности. Ако е между 0 и 1, по-високите стойности ще бъдат по-чести от по-ниските стойности. Ако е 1, резултатите ще бъдат на случаен принцип.Примери (всички с 1 милион повторения, min = 1, max = 20):
probabilityPower = 1,5
probabilityPower = 4
probabilityPower = 1
probabilityPower = 0,5
probabilityPower = 0,4
- person Saif Khan   schedule 04.06.2011"
в низа. - person Chev   schedule 04.06.2011NONCLUSTERED
индекси към някои от таблиците, това разреши проблема с изчакването за нас. - person zulucoda   schedule 12.06.2014