我正在阅读through the documentation on connection resiliency in Entity Framework Core,了解到可以在配置服务的同时在ASP.NET核心中配置连接弹性:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<PicnicContext>(
options => options.UseSqlServer(
"<connection string>",
providerOptions => providerOptions.EnableRetryOnFailure()));
}我注意到,对于其他服务,比如Azure Search客户端,默认情况下会启用重试机制。实体框架核心(3.1.3)是否也是这种情况,或者我是否需要显式调用providerOptions => providerOptions.EnableRetryOnFailure()
SqlServerDbContextOptionsBuilder documentation没有提供有关默认值的详细信息。
发布于 2020-04-27 01:20:10
失败时重试功能通过SqlServerRetryingExecutionStrategy实现。调用EnableRetryOnFailure基本上会将此策略配置为执行策略。
默认情况下,实体框架核心不会使用执行策略。或者更确切地说,默认的执行策略是NoopExecutionStrategy (在EF Core5中将重命名为NonRetryingExecutionStrategy ),它不做任何事情。
所以,没有默认的重试。而且这通常是一个深思熟虑的选择,不进行自动重试。默认情况下,查询会失败,错误会浮现出来,这样开发人员就可以处理它。如果应用程序是为重试而编写的,那么他们可以使用最适合的配置来启用功能。
https://stackoverflow.com/questions/61444624
复制相似问题