【发布时间】:2021-12-17 07:28:30
【问题描述】:
我在我的asp.net 5 应用程序中使用Pomelo Entity framework core 和MySqlConnector 连接到我的MySql 数据库 - 使用自定义 DbContext 类。这通常工作正常。
但是,我需要连接到连接字符串中的数据库以外的另一个数据库(例如“INFORMATION_SCHEMA”)。
我当然可以更改连接字符串,替换数据库名称,但是:
这会创建一个额外的连接池 - 每个连接字符串一个!
我试图避免这种情况 - 每个网站只有一个连接池。
我在搞乱“SetDefaultSchema”和其他尝试都失败了。
如何更改数据库名称,DbContext 使用所以我只有一个连接池,但每个 DbContext 都有自己的数据库要连接?
【问题讨论】:
-
所有 ORM,包括 EF Core 都在幕后使用旧的好 ADO.NET(还有什么?)。
DbConnection需要 - 你知道,连接字符串。 -
是的,但至少在 MySql 中您可以更改已打开连接的数据库。
-
怎么样?你能用 MySQL ADO.NET 连接对象做到这一点吗?或者您的意思是在 SELECT 和其他 DML SQL 命令中将 SCHEMA 附加到表名?如果是后者,那么他们(Pomelo 维护者)似乎特别不想允许这样做 - 请参阅他们的 GitHub 线程 github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/… 和相关链接
-
@IvanStoev:你说得对,'Schema' 与 MySql 不兼容,这就是我第一次尝试失败的原因(也是 Pomelo 放弃它的原因)。解决方法如下。
标签: mysql entity-framework-core dbcontext pomelo-entityframeworkcore-mysql