[英]Linq to Entities timeout issues
因此,當foreach循環枚舉數據時,我有以下linq查詢超時:
public IQueryable<Client> GetTopLevelData(Guid agentGuid, int year)
{
var clients = from client in ObjectContext.Clients
join cbc in ObjectContext.Client_Bucket_Client on client.Client_GUID equals cbc.Client_GUID
join acb in ObjectContext.Agent_Client_Bucket on cbc.Client_Bucket_GUID equals acb.Client_Bucket_GUID
where acb.Agent_GUID == agentGuid
orderby client.Last_Change_Date descending, client.File_Under
select client;
var clientInfos =
from c in clients
select new
{
Client = c,
TransactionInfos = ObjectContext.Transactions
.Where(t => t.Client_GUID == c.Client_GUID && t.Year == year)
.Select(t => new
{
Transaction = t,
ToAttach = ObjectContext.Forms.Where(f => f.Transaction_GUID == t.Transaction_GUID && f.Year == year) //.OrderByDescending(fo => fo.Create_Date);
})
};
// Looping over this query will hit the database *once*
foreach (var info in clientInfos)
{
foreach (var transactionInfo in info.TransactionInfos)
{
transactionInfo.Transaction.Forms.Attach(transactionInfo.ToAttach);
}
var tt = info.TransactionInfos.ToList(); //.Select(t => t.Transaction);
var trans = tt.Select(t => t.Transaction);
info.Client.Transactions.Attach(trans);
}
您可以在連接字符串中設置超時。
"Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer;Connect Timeout=30";
Connect Timeout
以秒為單位
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.