请原谅任何明显的错误/误解!我是新人!
我正在使用实体框架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];
}
答案 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()
方法提供代码,因此我无法更具体。