我使用以下教程创建了一个使用MySQL的ASP.NET EF应用程序:http://www.asp.net/identity/overview/getting-started/aspnet-identity-using-mysql-storage-with-an-entityframework-mysql-provider 它可以工作,但我不喜欢在MySqlInitializer类中硬编码设置我的数据库名称 - 在下面的片段中称为myDatabaseName:
var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
string.Format(
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
"myDatabaseName"));
我正在寻找一种动态获取DbContext数据库名称的方法,以便我仅在连接字符串中存储数据库名称,而不是在MySqlInitializer中再次存储。但我无法找到任何名称的属性,无论是在DbContext还是在DbContext的Database-attribute中。
DbContext.Database
属性的类型为DatabaseFacade
,它不包含方法GetDbConnection()
。现在,SQL 连接是在受保护的OnConfiguring
方法中使用DbContextOptionsBuilder
定义的。然而,这个 optionsBuilder 似乎无法在 DbContext 类之外访问。 - DMX David Cardinalusing Microsoft.EntityFrameworkCore;
,否则您将无法使用GetDbConnection()
方法。 - ADM-IT