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

标签 c# asp.net-mvc entity-framework connection-string azure-sql-database

我有一个限制为 60 个并发连接的 Azure 数据库。我的问题是我有几个爬虫填充这个数据库以供我们的网站使用 Entity Framework 使用。

多个爬虫很快就会耗尽所有连接并出错。我曾尝试在连接字符串中设置最大池大小值,但这似乎并未对实际数据库连接施加任何限制。

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

还有其他方法可以实现吗?

最佳答案

您正在尝试限制对共享资源的并发访问。通常是 Semaphore用于此。

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

但是,如果客户端在不同的机器上运行,放置信号量的自然位置将是 SQL Server 本身。参见 this article实现它的一种方法。在使用 DbContext 访问数据库之前,应用程序需要调用 proc 来获取锁。信号量限制需要为 59 才能保持一个连接以读取信号量。

关于c# - 使用 Entity Framework C# 限制与数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745658/

相关文章:

c# - NHibernate:为 Postgres 添加 DbTypes

c# - 为什么我应该更喜欢单个 'await Task.WhenAll' 而不是多个等待?

c# - 有一个空的基类是不好的设计吗?

asp.net - 如何将 "Users"集成到我的 DDD 模型中并验证用户身份?

c# - visual studio 2010和entity framework 5.0,我可以用吗?

c# - 更改其他 Win32-dl​​l/exe 中的资源

asp.net-mvc - Asp.NET MVC ModelBinder,获取 Action 方法

c# - 指定的用户没有有效的配置文件。无法加载 XXX.dll

c# - 在 Entity Framework 和 Linq to Entities 中使用规范模式和表达式

c# - ASP.NET WebAPI 2 + Entity Framework 连接缓存最佳实践