2013-05-23 9 views
9

Ich habe gerade eine brandneue Anwendung erstellt, hinzugefügt EntityFramework 5 über NuGet, erstellt eine sehr grundlegende DbContext und gespeichert, um es einige Daten.Wo ist meine Datenbank und wie sehe ich sie?

Wo genau sind meine Daten und wie kann ich es sehen? Das unmodifizierte App.config hinzugefügt ist

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
</configuration> 

Und durch die db Objekt inspizieren kann ich sehen, dass meine Verbindungszeichenfolge

ist
Data Source=(localdb)\\v11.0;Initial Catalog=ImageSignature.ImageContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE 

Aber all das sieht aus wie jibberish mir. Ich komme aus einem MySQL-Hintergrund.

Wo genau ist meine Datenbank, und wie kann ich es sehen? Ich sehe unter "Server Explorer" in VS2012 nichts Relevantes.

Antwort

8

This Artikel sollte Ihre Frage beantworten.

Der Konfigurationsabschnitt können Sie eine Standardverbindung Werk angeben, die Code Erste verwenden sollte, eine Datenbank zu suchen, die für einen Kontext zu verwenden. Die Standardverbindungsfactory wird nur verwendet, wenn keine Verbindungszeichenfolge zur Konfigurationsdatei für einen Kontext hinzugefügt wurde.

Wenn Sie das EF NuGet Paket eine Standardverbindung Fabrik installiert wurde registriert, dass zu Punkten entweder SQL Express oder LocalDB, je nachdem, welches Sie installiert haben.

nach zu urteilen der Config es scheint, dass Sie eine Verbindung zu LocalDB verwenden, which is a minimalist version of SQL used for development.

Sie können versuchen, den eingebauten im Server-Explorer in Visual Studio zu verwenden, die Datenbank zuzugreifen, aber, wie Sie geschrieben haben, ist es nicht sichtbar sein könnte "out of the box". Daher müssen Sie möglicherweise eine neue Verbindung im Server-Explorer erstellen, um den Inhalt anzuzeigen.

EDIT:

Ich habe eine VMware Windows 8 mit VS2012 feuern, um tatsächlich die Frage zu beantworten „wo auf dem Laufwerk die Datenbank“.

Die LocalDb schafft mdf und ldf Dateien in C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0

Screenshot from my VM

Was über den Server-Browser mit diesem verbunden ist, ich in der Lage war, die Datenbank zu betrachten, indem (LocalDb)\v11.0 als Server-Adresse eingeben und dann die Auswahl Datenbank mit einem Namen wie dem Datenkontextnamen aus Ihrer Anwendung (mit Namespace).

dieser Informationen Alle fand ich here.

Bitte beachten Sie, dass es sich bei dem von Ihnen geposteten Code here um einen Neuaufbau der Datenbank zu Beginn der Anwendung handelt, indem Sie Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>()); verwenden. Natürlich ist das gut, wenn Sie die App zum ersten Mal ausführen (also wird die Datenbank tatsächlich erstellt), aber nachfolgende Wiederholungen werden die Daten löschen und mit einem neuen Slate beginnen.Nachdem ich mich mit dem Server Explorer mit der Datenbank verbunden hatte, konnte ich diesen Code nicht ausführen, da die "Datenbank bereits verwendet wurde". Wahrscheinlich müssen Sie entweder die Verbindung im Server-Browser beibehalten oder die Codezeile ändern.

+0

Warum ist es nicht "out of the box" sichtbar? Wo ist es? Es * ist * in einer Datei auf meinem Computer gespeichert, richtig? Wurde es vielleicht in den temporären Ordner geworfen? Ich werde versuchen, 'AttachDBFilename' zu ​​meiner Verbindungszeichenfolge hinzuzufügen, wie Darin vorschlägt, aber ich würde wirklich gerne wissen, was es macht. – mpen

+0

Da ich Windows 7 und voll entwickelte SQL-Server für die Entwicklung verwende und LocalDd mit VS2012 auf W8 installiert zu sein scheint, habe ich Probleme, dies zu überprüfen. Würde es Ihnen etwas ausmachen, zu erzählen, wie Sie * einen sehr einfachen DbContext * erstellt haben? – Shaamaan

+0

Ich habe die relevanten zu [dieser Giste] (https://gist.github.com/mnbayazit/89409c1fb880f3704396) hochgeladen. Es ist nur eine Klasse mit 2 Feldern. – mpen

3

Sie verwenden LocalDb. Der Inhalt könnte in einer Datei gespeichert werden. Sie könnten den Speicherort angeben, von einer Verbindungszeichenfolge:

<connectionStrings> 
    <add name="ImageContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=c:\work\database.mdf" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Die name der Verbindungszeichenfolge muss mit dem Namen Ihrer DbContext Datei übereinstimmen.

Sie können den Server-Explorer in Visual Studio verwenden, um diese db-Datei zu öffnen und ihren Inhalt zu untersuchen.

+1

LocalDB ist eine servicebasierte Datenbank und hat nichts mit SQL Server Compact zu tun – ErikEJ

+0

Vielen Dank. Versucht, das hinzuzufügen; Es erstellte die DB-Datei, zu der ich mich verbinden konnte, indem ich "Microsoft SQL Server-Datenbankdatei" im Server-Explorer auswählte. Ich kann jetzt den Tisch sehen, aber ich kann seinen Inhalt nicht sehen. – mpen

+0

Wahrscheinlich, weil die Datenbank leer ist? – Shaamaan