2013-02-20 11 views
6

Originariamente avevo un primo codice EF che si collegava a un database esistente. Questo funzionava bene.Codice EF Primo: creazione del database - Accesso non riuscito per l'utente

Ho quindi apportato un paio di modifiche a un POCO e ho deciso di generare il nuovo database per me.

Errore: impossibile aprire il database "MyDatabase" richiesto dal login. L'accesso non è riuscito. \ R \ nLogin non riuscito per l'utente "DOMINIO \ nome utente".

ho cancellato il vecchio database, ma non ho cambiato la stringa di connessione:

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

Ho un istanza di SQL Server 2008 in mia macchina locale e my username dominio è in ruolo "sysadmin".

Ho provato vari inizializzatori di database e ottengo lo stesso errore per tutti. Non riesce alla prima chiamata di query, ma prima il codice non crea il database. Posso puntare la stringa di connessione a una copia del vecchio database (prima delle modifiche) e funzionerà correttamente, tranne che è il mio vecchio schema anche se ho specificato l'inizializzatore DropCreateDatabaseAlways. Questo non ha senso, e non seguire ciò che ho sperimentato sulla mia macchina domestica lavorando prima con il codice.

Utilizzo di Visual Studio 2012 ed EF5.

Devo essere in grado di avere il codice prima di generare un nuovo database. Cosa sta succedendo?

risposta

8

Ho scoperto che avevo un costruttore statico nella mia classe DbContext, che stava sovrascrivendo l'inizializzatore del database.

static MyDbContext() 
     { 
      Database.SetInitializer<MyDbContext>(null); 
     } 

Codice prima il reverse engineer lo inserisce, in modo da non sovrascrivere il database esistente. Quando sono passato non ci pensavo.

Spero che questo possa aiutare qualcun altro.

Problemi correlati