37

Sto lavorando in Visual Web Developer 2010 Express e utilizzo del CTP code Entity Framework. Sono in grado di farlo con il nuovo SQL Server CE ma non riesco a trovare una stringa di connessione per lavorare con SQL Server Express.Stringa di connessione di SQL Server Express per il codice Entity Framework First

Questo, utilizzando la versione beta di SQL Server CE, funziona correttamente (il database viene creato e ricreato sulle modifiche del modello).

<add name="TrempimModel" 
    connectionString="data source=|DataDirectory|TrempimModel.sdf" 
    providerName="System.Data.SqlServerCe.4.0" /> 

questo, che ho copiato dalla stringa aspnetdb connessioni,

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|TrempimModel.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

ha pronunciato la seguente messaggio all'avvio:

Impossibile completare l'operazione. Il SqlConnection fornito non specifica un catalogo iniziale

Quindi come farlo funzionare con SQL Server Express?

risposta

59

Il problema con la stringa di connessione è:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         AttachDBFilename=|DataDirectory|aspnetdb.sdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Stai fondamentalmente definizione di ciò che "server" si stabilisce la connessione - ma tu sei non dire quello del database all'interno del file per collegare a. Inoltre, l'estensione del file per i file di database di SQL Server Express è .mdf (non .sdf - questa è SQL Server Compact Edition) - è necessario tenerne conto anche! (era un refuso, secondo il commento di OP).

È necessario definire un extra database=.... (o Initial Catalog=.....) nella stringa di connessione:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         database=YourDatabaseName; 
         AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

allora dovrebbe funzionare bene.

Per ulteriori informazioni e tonnellate di campioni, consultare il sito Web ConnectionStrings.

+0

a) l'estensione sdf era un refuso. Stavo usando mdf nella stringa di connessione - ho modificato la domanda per riflettere questo. il suggerimento di specificare il database ha risolto il mio problema - grazie. Sto usando lo stesso nome del nome del file - è corretto o può causare qualche problema lungo la linea? – GilShalit

+0

@GilShalit: dipende da cosa viene realmente chiamato il database all'interno del tuo MDF; è probabile che sia lo stesso nome del nome del file. Dovresti verificarlo collegando l'MDF a un'istanza di SQL Server a tutti gli effetti e vedere cosa viene realmente chiamato il database memorizzato all'interno di MDF. –

+0

come sembri sapere molto su questo, non credo che se hai un momento puoi dare un'occhiata alla mia domanda ... Posso far funzionare la stringa di connessione ma poi se provo a modificare/usare il database, ottengo così tanti errori :(- http://stackoverflow.com/questions/5924553/entity-framework-error-connecting-to-sql-server-express-after-mounting-connecting and reposted to MSDN - http: //social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/1ec3ff63-d8a1-4844-942d-c2c05ed8078e – Wil

Problemi correlati