C# 让EntityFramework尊重mysql最大用户连接

C# 让EntityFramework尊重mysql最大用户连接,c#,mysql,entity-framework,azure,asp.net-web-api2,C#,Mysql,Entity Framework,Azure,Asp.net Web Api2,如果max\u user\u连接已经打开,是否有方法告诉实体框架等待 我想我可以捕获异常并重试,或者保留一个计数器,但这充其量也会让人感觉不舒服 My Azure日志中充满以下消息: System.Data.Entity.Core.EntityException: The underlying provider failed on Open. MySql.Data.MySqlClient.MySqlException: Authentication to host 'xxx' for use

如果max\u user\u连接已经打开,是否有方法告诉实体框架等待

我想我可以捕获异常并重试,或者保留一个计数器,但这充其量也会让人感觉不舒服

My Azure日志中充满以下消息:

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. 
MySql.Data.MySqlClient.MySqlException: 
Authentication to host 'xxx' for user 'yyy' using method 'mysql_native_password' failed with message: 
User 'yyy' has exceeded the 'max_user_connections' resource (current value: 4)
我尝试将
Max Pool Size=4
添加到连接字符串中,但没有帮助

<add name="DbContext" connectionString="Database=db;Data Source=xxx;User Id=yyy;Password=zzz;CharSet=utf8;Persist Security Info=True;Convert Zero Datetime=True;Max Pool Size=4" providerName="MySql.Data.MySqlClient" />

根据Vito的建议:捕获异常并让前端决定要做什么:

在后端,我使用了for.NET的一个实现。它允许我用一个属性来修饰我的所有存储库,以处理这个特定的异常

在前端,我可能会做一些事情,比如等待400毫秒,然后在放弃之前再试1-3次

在包管理器控制台中:
安装软件包PostSharp

您还需要安装一个

然后装饰类或方法:

[MaxMysqlConnectionExceptionHandlerAspect]
public class FancyPantsService {}

max\u user\u connections
是一个数据库参数,因此EF在登录之前无法知道它。我相信你能做的就是捕捉异常并处理它。我知道每个环境的
max\u user\u连接数。我可以告诉EF不要打开更多连接吗?您可以将其作为一个参数进行管理,并在上下文构造函数中处理它,但在应用程序的所有实例中同步此值会非常麻烦。我相信最好的办法就是抓住这个例外。
[MaxMysqlConnectionExceptionHandlerAspect]
public class FancyPantsService {}