实体框架连接超时性能问题

时间:2015-08-14 10:30:22

标签: c# entity-framework azure

请原谅任何明显的错误/误解!我是新人!

我正在使用实体框架6创建一个简单的c#Winforms应用程序连接到sql azure数据库,代码优先。开发平台是VS2015社区版。

表单加载具有记录ID /名称的组合框以供选择。

通过组合框I选择记录时:

1)创建一个新的上下文(首先处理先前的上下文)

2)加载数据图

3)填写表格

4)允许用户更改

5)(根据用户命令)保存更改/上下文处理

我的问题是,如果我使用组合框选择记录,则填充数据的查询将在大约30-40毫秒内运行(根据调试信息)。这在我忙于选择记录时有效。

然而,如果我将表单保持无人值守30秒然后选择一条记录,则完全相同的查询将占用500毫秒的区域。相同的数据,连接字符串,一切。必须存在我不知道的连接问题。半秒不是一个巨大的时间,但它是显而易见的,我觉得我应该理解为什么。

我将连接和命令超时属性推高到大值但结果相同。

我的Azure数据库是S1层。

我的连接字符串是 “Server = tcp:*****。windows.net,1433; Database = *****;用户ID = *********;密码= ******; Trusted_Connection = False ; Encrypt = True;连接超时= 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];
}

1 个答案:

答案 0 :(得分: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()方法提供代码,因此我无法更具体。