ASP.NET EntityFramework 获取数据库名称
ASP.NET EntityFramework get database name
我使用以下教程使用 MySQL 创建了一个 ASP.NET EF 应用程序:http://www.asp.net/identity/overview/getting-started/aspnet-identity-using-mysql-storage-with-an-entityframework-mysql-provider 它可以工作,但我不喜欢设置在 MySqlInitializer 中硬编码的数据库名称class - 在以下代码段中调用了 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 的数据库属性中。
这应该可以为您完成工作
string databaseName = context.Database.Connection.Database;
对于那些使用 EF 核心的人,可以这样做作为替代:
var databaseName = context.Database.GetDbConnection().Database
我使用以下教程使用 MySQL 创建了一个 ASP.NET EF 应用程序:http://www.asp.net/identity/overview/getting-started/aspnet-identity-using-mysql-storage-with-an-entityframework-mysql-provider 它可以工作,但我不喜欢设置在 MySqlInitializer 中硬编码的数据库名称class - 在以下代码段中调用了 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 的数据库属性中。
这应该可以为您完成工作
string databaseName = context.Database.Connection.Database;
对于那些使用 EF 核心的人,可以这样做作为替代:
var databaseName = context.Database.GetDbConnection().Database