web-dev-qa-db-ja.com

ASP.NET EntityFrameworkはデータベース名を取得します

次のチュートリアルを使用して、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に2回目ではなく、接続文字列にのみデータベース名を格納する方法を探しています。しかし、DbContextにも、DbContextのDatabase-attributeにも、名前の属性を見つけることができません。

26
Lion

これはあなたのために仕事をするはずです

string databaseName = context.Database.Connection.Database;
33
pkmiec

EFコアを使用している場合は、これを代替として実行できます。

var databaseName = context.Database.GetDbConnection().Database
28
johnny 5