MBK*_*MBK 5 c# sql entity-framework database-connection
我想知道ConnectRetryInterval和ConnectRetryCount实体框架SQL连接字符串设置是否使EF重试数据库失败的更新。请参阅带有以下设置的EF连接字符串示例
<add key="MyConnectionString" value ="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MySQLServer;initial catalog=My;integrated security=True; ConnectRetryCount=4;ConnectRetryInterval=5; Connection Timeout=5; pooling=False;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
另一个问题是有关DbExecutionStrategy / SqlAzureExecutionStrategy重试逻辑对ConnectRetryInterval&ConnectRetryCount的干扰。连接设置是否先重试,然后再执行策略?或者,连接设置和执行策略是否根据重试时间间隔彼此重试?
谢谢
我依靠这份涵盖“空闲连接弹性”的 Microsoft 白皮书作为回答您问题的参考。(请注意,白皮书采用下载的 MS Word/.docx 文章格式。)
ConnectRetryCount和ConnectRetryInterval设置与 MS SQL Server (v14+) 驱动程序关联,独立于实体框架。因此,只要服务器和驱动程序都支持它并且在连接字符串中启用了设置,它们也应该在 EF 中工作。但是,在您的示例中,Pooling设置为false。这将明确阻止池化并每次打开一个新连接,因此不会有“空闲”连接可供使用。
EF Core 对ExecutionStrategy的使用有所不同,因为它可以处理事务错误并允许您根据错误类型实施自定义策略。您还可以EnableRetryOnFailure()在配置 SQL 提供程序选项时简单地调用以使用默认的 ExecutionStrategy。SQL驱动程序的空闲连接重试和EF的事务失败重试之间没有重叠。
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |