Я отримую тайм-аути за допомогою 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();
}
Що ще я можу зробити, щоб домогтися відліку часу від часу? Це відбувається лише для дуже великих наборів даних. З невеликими наборами даних все працює добре.
Ось одна з помилок, які я отримую:
System.Data.EntityCommandExecutionException: Під час виконання визначення команди сталася помилка. Деталі див. У внутрішньому виключенні. ---> System.Data.SqlClient.SqlException: термін очікування минув. Період часу очікування, який минув до завершення операції, або сервер не відповідає.
Гаразд - у мене це працювало, і нерозумно, що сталося. У мене було і рядок з'єднання з, Default Command Timeout=300000
і CommandTimeout встановлено на 180. Коли я вийняв Default Command Timeout
рядок з'єднання, він працював. Отже, відповідь полягає в ручному встановленні CommandTimeout у вашому сховищі на вашому контекстному об'єкті так:
this.context.CommandTimeout = 180;
Мабуть, встановлення параметрів тайм-ауту в рядку з'єднання не впливає на це.
"
в рядку.
NONCLUSTERED
індекси до деяких таблиць, це вирішило для нас проблему очікування.