大家过得怎么样?
今天很简单的问题。如果我给两个单独的线程两个不同的 SqlCommands。如果两个SqlCommands使用同一个SqlConnection,它们可以同时执行吗?SqlConnection 会阻止这种行为吗?还是发生了……更有趣的事情?
(出于这个确切原因,我确实相信 SqlConnections 是由连接字符串汇集的,但我只需要一些保证)
这是一个假设性问题,只是好奇 SqlConnection 在所描述的设计下的行为方式。
大家过得怎么样?
今天很简单的问题。如果我给两个单独的线程两个不同的 SqlCommands。如果两个SqlCommands使用同一个SqlConnection,它们可以同时执行吗?SqlConnection 会阻止这种行为吗?还是发生了……更有趣的事情?
(出于这个确切原因,我确实相信 SqlConnections 是由连接字符串汇集的,但我只需要一些保证)
这是一个假设性问题,只是好奇 SqlConnection 在所描述的设计下的行为方式。
使用 ADO.NET 连接池,运行查询的正确方法是创建并打开一个连接对象,然后运行一个命令对象(它使用连接对象),然后关闭连接。因此,您描述的场景(您将打开的连接传递给两个不同的命令对象)永远不会发生。在正常使用中,您的两个不同的命令对象应该彼此独立地打开和关闭它们自己的连接对象,这意味着您永远不会遇到两个命令对象同时尝试同时使用同一个连接的问题。
也许您应该考虑Multiple Active Result Sets。您可以在单个 SqlConnection 对象上执行多个查询,但有一定的限制。