c# - 连接超时并不总是使用实体框架工作
问题描述
我正在使用实体框架,我的连接字符串看起来像这样 -
Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;Connection Timeout=2
我已将连接超时设置为 2 秒,并且大多数情况下此代码都有效,如果连接断开,我会在 2 秒内出错。但在极少数情况下,此超时发生在 25 到 30 秒后,正如您在下面的日志中看到的那样,错误发生在 23 秒后 -
8 月 30 日 07:13:07 保存开始。
8 月 30 日 07:13:30 错误 - 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)- 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识、SqlConnectionString 连接选项、SqlCredential 凭据、对象 providerInfo、String newPassword、SecureString newSecurePassword , Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken)
代码是这样写的——
Log.Info("Save begins.")
try{
Context.SaveChanges();
}
catch(
Log.Info($"ERROR - + {ex.Message}-{ex.StackTrace}");
)
Log.Info("Save Ends.")
我无法找到这种延迟的原因,因为它偶尔会发生。您能否帮助我了解这种行为的可能原因是什么?
解决方案
尝试在实例化它时直接将连接超时设置到您的 DbContext 类。
var context = new Context("connection string");
(context as IObjectContextAdapter).ObjectContext.CommandTimeout = 2;
之后,再次尝试您的查询。
推荐阅读
- sql - 使用 CASE WHEN 将数字列表添加到查询中
- java - Spark Java - 将 csv 中的 json 转换为映射
- javascript - 在 UWP 中将画布另存为图像
- regex - 提升正则表达式匹配失败
- python - AttributeError:模块'asyncio'没有属性'coroutine'(Python 3.6.4)
- android - 什么版本的 SDK 和 ndk 是 Nougat 的正确版本?
- php - 更新记录中的单个值不使用按钮?
- vb.net - 无法访问 DataGridView VB.Net 中的单元格数据
- python-3.x - 使用 Python 下载时 Zip 文件损坏
- git - GitLab 和 Visual Studio 代码