2013-05-23 7 views
9

Właśnie stworzyłem zupełnie nową aplikację, dodano EntityFramework 5 poprzez NuGet, stworzyłem bardzo podstawowy DbContext i zapisałem do niego trochę danych.Gdzie jest moja baza danych i jak ją wyświetlić?

Gdzie dokładnie są moje dane i jak je wyświetlić? Niemodyfikowana App.config ona dodana jest

<?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> 

I poprzez kontrolę obiektu db widzę, że moje ciąg połączenia jest

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

Ale wszystko to wygląda jibberish do mnie. Pochodzę z tła MySQL.

Gdzie dokładnie jest moja baza danych i jak mogę ją wyświetlić? Nie widzę niczego istotnego w "Server Explorer" w VS2012.

Odpowiedz

8

This artykuł powinien odpowiedzieć na Twoje pytanie.

Sekcja konfiguracji pozwala określić domyślne połączenie fabrycznego że kod Najpierw należy użyć, aby zlokalizować bazę danych do wykorzystania dla kontekstu . Domyślna fabryka połączeń jest używana tylko wtedy, gdy do pliku konfiguracyjnego nie dodano żadnego ciągu połączenia dla kontekstu .

Po zainstalowaniu pakietu EF Nuget fabryka domyślne połączenie został zarejestrowany że wskazuje na obu SQL Express lub LocalDb, w zależności na których jeden został zainstalowany.

Sądząc po konfiguracji, wygląda na to, że używasz połączenia z LocalDb, which is a minimalist version of SQL used for development.

Możesz spróbować użyć wbudowanego programu Server Explorer w programie Visual Studio, aby uzyskać dostęp do tej bazy danych, ale, jak pisałeś, może być niewidoczny "po wyjęciu z pudełka". W związku z tym konieczne może być utworzenie nowego połączenia w programie Server Explorer, aby wyświetlić zawartość.

EDIT:

miałem odpalić VMware Windows 8 z VS2012 faktycznie odpowiedzieć na pytanie „gdzie na dysku jest baza danych”.

LocalDb tworzy mdf i ldf pliki C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0

Screenshot from my VM

chodzi o podłączenie do niego za pomocą przeglądarki na serwerze, udało mi się zobaczyć bazę wpisując (LocalDb)\v11.0 jako adres serwera, a następnie wybranie baza danych o nazwie takiej jak nazwa kontekstu danych z aplikacji (z przestrzenią nazw).

Wszystkie te informacje znalazłem here.

Należy zauważyć, że w opublikowanym przez ciebie kodzie here wydaje się, że przebudowujesz bazę danych na początku aplikacji, używając Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());. Oczywiście jest to dobre, gdy uruchamiasz aplikację po raz pierwszy (więc baza danych rzeczywiście zostanie utworzona), ale kolejne powtórki wyczyści dane i rozpocznie się od nowego arkusza.Po tym, jak połączyłem się z bazą danych przy użyciu Eksploratora serwera, faktycznie nie mogłem wykonać tego kodu, ponieważ "baza danych była już w użyciu". Najprawdopodobniej będziesz musiał ponownie rozważyć utrzymanie połączenia otwartego w przeglądarce serwera lub zmienić ten wiersz kodu.

+0

Dlaczego nie jest "widoczny po wyjęciu z opakowania"? Gdzie to jest? To * jest * przechowywane w pliku na moim komputerze, prawda? Czy to może być wrzucone do folderu tymczasowego? Spróbuję dodać 'AttachDBFilename' do mojego ciągu połączenia tak jak sugeruje Darin, ale naprawdę chciałbym wiedzieć, co robi. – mpen

+0

Ponieważ używam Windows 7 i pełnowymiarowych serwerów SQL do programowania, a LocalDd wydaje się być zainstalowany z VS2012 na W8, mam problem z faktycznym sprawdzeniem. Czy mógłbyś podzielić się tym, jak stworzyłeś bardzo podstawowy DbContext *? – Shaamaan

+0

Przesłałem stosowną wiadomość do [tej sprawy] (https://gist.github.com/mnbayazit/89409c1fb880f3704396). To tylko klasa z 2 polami. – mpen

3

Używasz LocalDb. Treść może być przechowywana w pliku. Można określić lokalizację przy użyciu ciąg połączenia:

<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> 

name z ciąg połączenia musi być zgodna z nazwą pliku DbContext.

Można użyć programu Server Explorer w programie Visual Studio, aby otworzyć ten plik db i zbadać jego zawartość.

+1

LocalDB to bazująca na usługach baza danych i nie ma nic wspólnego z SQL Server Compact – ErikEJ

+0

Dziękuję. Próbowałem to dodać; utworzyło plik DB, z którym mogłem się połączyć, wybierając "Plik bazy danych Microsoft SQL Server" w Server Explorer. Teraz widzę stół, ale nie mogę zobaczyć jego zawartości. – mpen

+0

Całkiem możliwe, że baza danych jest pusta? – Shaamaan