【发布时间】:2015-08-14 19:21:33
【问题描述】:
请原谅任何明显的错误/误解!我是新人!
我正在创建一个简单的 c# Winforms 应用程序,使用实体框架 6 连接到 sql azure 数据库,代码优先。开发平台为VS2015社区版。
表单会加载带有记录 ID/名称的组合框以供选择。
通过组合框 I 选择记录时:
1) 创建一个新的上下文(首先处理先前的上下文)
2) 加载数据图
3) 填充表单
4) 允许用户更改
5)(根据用户命令)保存更改/处理上下文
我的问题是,如果我使用组合框选择记录,则填充数据的查询会在大约 30-40 毫秒内运行(根据调试信息)。这在我忙于选择记录时有效。
但是,如果我让表单无人看管 30 秒,然后选择一条记录,则完全相同的查询需要 500 毫秒的区域。相同的数据,连接字符串,一切。一定有我不知道的连接问题。半秒不是很长,但很明显,我觉得我应该明白为什么。
我将连接和命令超时属性设置为较大的值,但结果相同。
我的 Azure 数据库是 S1 层。
我的连接字符串是 "服务器=tcp:*****.windows.net,1433;数据库=*****;用户 ID=*******;密码=******;Trusted_Connection=False ;Encrypt=True;Connection Timeout=1200;multipleactiveresultsets=true" providerName="System.Data.SqlClient" />
我正在使用 SqlAzureExecutionStrategy。
我的客户端计算机是运行 windows 10 pro 的 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) { ResetContext(); var graph = _Context.CareCoordinators .Where(c => c.CareCoordinatorId.Equals(intID)) .Include("DefaultAreas") .Include("Branch") .ToList(); _主题=图[0]; }
-
可能的原因有很多。连接会在 30 秒后关闭吗?数据库引擎预留多少内存?等等。
-
@TonyLodge 将代码示例编辑为代码块,而不是 cmets。
-
@TonyLodge
ResetContext()做什么?
标签: c# entity-framework azure