使用 Entity Framework C# 限制与数据库的连接

msc*_*d02 5 c# asp.net-mvc entity-framework connection-string azure-sql-database

我有一个限制为 60 个并发连接的 Azure 数据库。我的问题是我有几个爬虫填充这个数据库,以便我们的网站使用实体框架使用。

多个爬虫用尽所有连接和错误不需要很长时间。我已尝试在连接字符串中设置最大池大小值,但这似乎并未对实际数据库连接强制执行任何限制。

我可以将其包装DbContext在一个单例中,但随后我会将整个爬虫限制为单个连接。

有没有其他方法可以实现这一目标?

And*_*ryd 4

您正在尝试限制对共享资源的并发访问。通常为此使用信号量。

要在单个盒子或单个应用程序中执行此操作,您可以使用Semaphore 或 SemaphoreSlim

但是,如果客户端在不同的机器上运行,则放置信号量的自然位置将是 SQL Server 本身。请参阅本文了解实现它的一种方法。应用程序需要先调用过程来获取锁,然后再使用DbContext. 信号量限制需要为 59,才能保留一个连接来读取信号量。