37

Ich arbeite in Visual Web Developer 2010 Express und mit dem Entity Framework Code-zuerst CTP. Ich kann dies mit dem neuen SQL Server CE tun, aber ich kann keine Verbindungszeichenfolge finden, um mit SQL Server Express zu arbeiten.SQL Server Express Verbindungszeichenfolge für Entity Framework Code Zuerst

Dieser, der die Betaversion von SQL Server CE verwendet, funktioniert einwandfrei (bei Modelländerungen wird eine Datenbank erstellt und neu erstellt).

konnte nicht abgeschlossen Betrieb

:

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

Dieses, das ich von der aspnetdb Verbindungen String, kopiert

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

gibt die folgende Meldung beim Start. Die mitgelieferte SqlConnection gibt keinen initialen Katalog an

Wie funktioniert es mit SQL Server Express?

Antwort

59

Das Problem mit der Verbindungszeichenfolge ist hier:

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

Sie sind im Grunde zu definieren, was „Server“, um Sie eine Verbindung herstellen - aber du bist nicht sagen, welche Datenbank in der Datei zu verbinden zu. Auch - die Dateierweiterung für SQL Server Express-Datenbankdateien ist .mdf (nicht .sdf - das ist SQL Server Compact Edition) - Sie müssen dies auch berücksichtigen! (war ein Tippfehler, nach Kommentar von OP).

Sie benötigen eine zusätzliche database=.... (oder Initial Catalog=.....) in der Verbindungszeichenfolge zu definieren:

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

Dann sollte es gut funktionieren.

Für mehr Hintergrund und Tonnen von Proben, überprüfen Sie die ConnectionStrings Website.

+0

a) Die SDF-Erweiterung war ein Tippfehler. Ich benutzte MDF in der Verbindungszeichenfolge - editierte die Frage, um das zu reflektieren. Der Vorschlag, die Datenbank zu spezifizieren, löste mein Problem - danke. Ich benutze den gleichen Namen wie der Dateiname - ist das korrekt oder kann es ein Problem auf der ganzen Linie verursachen? – GilShalit

+0

@GilShalit: Es hängt davon ab, was die Datenbank in Ihrem MDF wirklich heißt; Die Chancen stehen hoch, dass es sich um den gleichen Namen handelt wie der Dateiname. Sie müssten dies überprüfen, indem Sie die MDF an eine vollwertige SQL Server-Instanz anhängen und sehen, was die in der MDF gespeicherte Datenbank wirklich heißt. –

+0

wie Sie scheinen, eine Menge darüber zu wissen, ich nehme nicht an, wenn Sie einen Moment haben, können Sie sich meine Frage ansehen ... Ich kann die Verbindungszeichenfolge zum Funktionieren bringen, aber wenn ich dann versuche, das/die zu bearbeiten Datenbank, bekomme ich so viele Fehler :(- http://stackoverflow.com/questions/5924553/entity-framework-error-connecting-to-sql-server-express-after-mountting-connecting und reposted zu MSDN - http: //social.msdn.microsoft.com/Forums/en-US/adodottentityframework/thread/1ec3ff63-d8a1-4844-942d-c2c05ed8078e – Wil