簡體   English   中英

實體框架連接超時性能問題

[英]Entity framework connection timeout performance issues

請原諒任何明顯的錯誤/誤解! 我是新來的!

我正在創建一個簡單的c#Winforms應用程序,首先使用實體​​框架6連接到sql azure數據庫。 開發平台是VS2015社區版。

表單加載帶有記錄ID /名稱的組合框以供選擇。

通過組合框I選擇記錄后:

1)創建一個新的上下文(首先放置先前的上下文)

2)加載數據圖

3)填寫表格

4)允許用戶更改

5)(通過用戶命令)保存更改/處理上下文

我的問題是,如果我使用組合框選擇記錄,則查詢將填充數據,運行時間大約為30-40ms(根據調試信息)。 這在我忙於選擇記錄時有效。

但是 ,如果我在30秒鍾內無人看管該表單,然后選擇一條記錄,則完全相同的查詢將花費500ms左右。 相同的數據,連接字符串,所有內容。 必須有一個我不知道的連接問題。 半秒不是一個很長的時間,但是很明顯,我覺得我應該明白為什么。

我將連接和命令超時屬性推到較大的值,但結果相同。

我的Azure數據庫是S1層。

我的連接字符串是“服務器= tcp:*****。windows.net,1433;數據庫= *****;用戶ID = *********;密碼= ****** ; Trusted_Connection = False; Encrypt = True; Connection Timeout = 1200; multipleactiveresultsets = true“ providerName =” System.Data.SqlClient“ />

我正在使用SqlAzureExecutionStrategy。

我的客戶端計算機是運行Windows 10專業版的i7 4Ghz / 16GB Ram / SSD。

我真的很感謝您的幫助。 謝謝。

Code sample:
private void LoadRecord(int intID)
{
ResetContext();
var graph = _Context.CareCoordinators
.Where(c => c.CareCoordinatorId.Equals(intID))
.Include("DefaultAreas")
.Include("Branch")
.ToList();
_Subject = graph[0];
}

在使用上下文之后,而不是在創建新上下文之前,將其處置。 那可能是占用您時間的原因。

如下所示應會有所幫助:

private void LoadRecord(int intID)
{
    using (Context context = new Context())
    {
        var graph = context.CareCoordinators
        .Where(c => c.CareCoordinatorId.Equals(intID))
        .Include("DefaultAreas")
        .Include("Branch")
        .ToList();
        _Subject = graph[0];
    }
}

不幸的是,由於您沒有提供ResetContext()方法的代碼,因此我無法更具體地說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM