2015-07-19 19 views
11

Ho creato un'applicazione EF di ASP.NET con MySQL utilizzando il seguente tutorial: http://www.asp.net/identity/overview/getting-started/aspnet-identity-using-mysql-storage-with-an-entityframework-mysql-provider Funziona ma non mi piace impostare il nome del mio database codificato nella classe MySqlInitializer - chiamato myDatabaseName nel seguente frammento:ASP.NET EntityFramework ottiene il nome del database

var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
     string.Format(
      "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'", 
      "myDatabaseName")); 

sto cercando un modo per ottenere il nome del database dalla DbContext in modo dinamico che memorizzare il database-name solo nella connessione-stringa e non una seconda volta nel mio MySqlInitializer. Ma non riesco a trovare alcun attributo per il nome, né nel DbContext né nell'attributo Database del DbContext.

risposta

23

Questo dovrebbe fare il lavoro per voi

string databaseName = context.Database.Connection.Database; 
10

Per quelli di voi che utilizzano nucleo EF7 1.1 o meno si può fare questo in alternativa:

var databaseName = context.Database.GetDbConnection().Database 
+1

GetDbConnection() in 2.0 – John

+0

@ John hanno aggiornato di nuovo? –

+0

Anche bisogno di utilizzare Microsoft.EntityFrameworkCore; – Skarsnik

Problemi correlati