ASP.NET EntityFramework获取数据库名称

Lio*_*ion 24 c# mysql asp.net entity-framework

我使用以下教程使用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"));
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来动态地从DbContext获取数据库的名称,以便我只将数据库名称存储在连接字符串中,而不是第二次存储在MySqlInitializer中.但我找不到该名称的任何属性,无论是在DbContext还是在DbContext的Database-attribute中.

pkm*_*iec 34

这应该为你做的工作

string databaseName = context.Database.Connection.Database;
Run Code Online (Sandbox Code Playgroud)

  • 不再适用于 .NET 7.0。 (5认同)

joh*_*y 5 31

对于那些使用EF核心的人来说,可以选择这样做:

var databaseName = context.Database.GetDbConnection().Database
Run Code Online (Sandbox Code Playgroud)

  • 2.0中的GetDbConnection() (3认同)
  • 还需要一个使用Microsoft.EntityFrameworkCore; (2认同)