正如标题所示,我们有一个.NET应用程序通过实体框架调用MySQL数据库。一些存储过程声明并使用MySQL用户变量 从文档中我看到用户变量被隔离到会话 我无法弄清楚当使用实体框架时会话是如何被隔离的 使用MySQL Connector时,每次对数据库的EF调用都有自己的会话吗?我担心两个电话共享@userVariables。
(我知道我可以在存储过程中声明常规变量,但是它必须将proc的各个部分复制到一个adhoc查询选项卡中来测试碎片。使用用户变量可以很容易地进行测试。)
答案 0 :(得分:0)
在MySQL会话中意味着与MySQL服务器的开放连接。如果您的应用程序使用连接池,因此可能无法关闭数据库连接并在各种调用之间重新打开,MySQL用户定义变量中的数据可能会在不同的应用程序用户之间共享。
但是,如果您的应用程序不使用连接池,则每次代码关闭与数据库的连接时,连接都将完全关闭。在这种情况下,用户定义的变量不会在应用程序用户之间共享。
连接池由数据源提供程序(MySqlConnection)管理,而不是由EF管理。