[英]C# Entity Framework timeout creating DataTable
VS 2015 EF 6.0
我正在嘗試自動化一項艱巨的工作:創建一個多工作表的excel工作簿,其中每個工作表都是不同查詢的結果。 首先,如果有一個現有的自動方法無需滾動我自己的解決方案,請告訴我。 除此以外:
我建立了每頁查詢的集合,然后針對每個查詢字符串執行以下操作:
...
"query" passed in as string above
...
DataTable dt;
using (var db = new MyDbEntities()) {
db.Database.CommandTimeout = 180;
try {
dt = db.DataTable(query);
} catch (Exception e) {
throw new Exception("Datatable creation failed: " + e.Message);
}
}
...
create spreadsheet-sheet
...
我有一個查詢導致異常: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding
我很確定我會在180秒超時到期之前獲得超時方式。 用我的手表對其進行計時表明DataTables
調用忽略了CommandTimeout
。 大約30秒后似乎超時了。
編輯
請求了有關查詢。 它跟隨。 它是繼承的。 這很丑。 這是一頭慢豬。 它是從遠程鏈接的Oracle數據庫和幾個“本地”數據庫中查詢的。 從SSMS
運行時,需要幾分鍾的時間才能完成,但是確實可以完成。
SELECT
UPPER(LOCAL_CONSUMER_TABLE.machine) AS machine,
UPPER(LOCAL_CONSUMER_TABLE.personId) AS personId,
Persons.LastName AS lastName,
Persons.FirstName AS firstName
FROM
(
SELECT
GROUP_USER_ACCOUNT.UAC_ITU__ID
FROM
ORACLE_LINKED_SERVER..CONSUMER_TABLE.GROUP_USER_ACCOUNT AS GROUP_USER_ACCOUNT
WHERE GROUP_USER_ACCOUNT.UAC_ITU__ID IN
(
SELECT
GROUP_USERVIEW.ITU_ITU__ID
FROM
LOCAL_CONSUMER_TABLE.dbo.LoginInfoFinal AS LOCAL_CONSUMER_TABLE
INNER JOIN ORACLE_LINKED_SERVER..CONSUMER_TABLE.ITG_USER AS GROUP_USERVIEW
ON UPPER(LOCAL_CONSUMER_TABLE.personId) = UPPER(GROUP_USERVIEW.ITU_personId)
)
AND GROUP_USER_ACCOUNT.UAC_DATE_REVOKED IS NULL
GROUP BY
GROUP_USER_ACCOUNT.UAC_ITU__ID
HAVING COUNT(GROUP_USER_ACCOUNT.UAC_ITU__ID) > 1
) AS USER_ACCOUNT
INNER JOIN ORACLE_LINKED_SERVER..CONSUMER_TABLE.ITG_USER AS GROUP_USERVIEW
ON USER_ACCOUNT.UAC_ITU__ID = GROUP_USERVIEW.ITU_ITU__ID
INNER JOIN LOCAL_CONSUMER_TABLE.dbo.LoginInfoFinal AS LOCAL_CONSUMER_TABLE
ON UPPER(LOCAL_CONSUMER_TABLE.personId) = UPPER(GROUP_USERVIEW.ITU_personId)
INNER JOIN FACILITY.Personnel.Persons AS Persons
ON UPPER(LOCAL_CONSUMER_TABLE.personId) = UPPER(Persons.personId);
正如克里斯所說,這是連接超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.