Где моя база данных и как ее просматривать?

Я только что создал совершенно новое приложение, добавил EntityFramework 5 через NuGet, создал очень простой DbContext и сохранил некоторые данные.

Где именно мои данные и как их просматривать? Немодифицированный App.config он добавил:

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

И, проверив объект db, я вижу, что моя строка соединения

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

Но все это похоже на насмешку. Я исхожу из фона MySQL.

Где именно моя база данных и как ее просмотреть? Я не вижу ничего в разделе "Server Explorer" в VS2012.

Ответ 1

Эта статья должна ответить на ваш вопрос.

В разделе конфигурации вы можете указать соединение по умолчанию factory, который должен использовать код First для поиска базы данных, используемой для контекст. Соединение по умолчанию factory используется только тогда, когда нет строка подключения добавлена ​​в файл конфигурации для контекст.

Когда вы установили пакет EF NuGet, соединение по умолчанию factoryбыла зарегистрирована, которая указывает на SQL Express или LocalDb, в зависимости от на котором вы установили.

Судя по вашей конфигурации, кажется, вы используете соединение с LocalDb, которое является минималистской версией SQL, используемой для разработки.

Вы можете попытаться использовать встроенный проводник сервера в Visual Studio для доступа к этой базе данных, но, как вы писали, он может не отображаться "из коробки". Таким образом, вам может понадобиться создать новое подключение в обозревателе сервера, чтобы просмотреть содержимое.

EDIT:

Мне пришлось запустить VMware Windows 8 с VS2012, чтобы ответить на вопрос "где на диске находится база данных".

LocalDb создает файлы mdf и ldf в C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0

Screenshot from my VM

Что касается подключения к нему через браузер сервера, я смог просмотреть базу данных, введя (LocalDb)\v11.0 в качестве адреса сервера, а затем выбрав базу данных с именем, подобным имени контекста данных из вашего приложения (с пространством имен).

Вся эта информация я нашел здесь.

Обратите внимание, что в коде, который вы отправили здесь, кажется, что вы восстанавливаете базу данных в начале приложения, используя Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());, Конечно, это хорошо при первом запуске приложения (поэтому база данных фактически создается), но последующие повторы будут очищать данные и начинаться со свежего сланца. После того, как я подключился к базе данных с помощью Server Explorer, я фактически не смог выполнить этот код, поскольку "база данных уже использовалась". Вероятно, вам придется пересмотреть вопрос о сохранении соединения, открытого в браузере сервера, или изменить эту строку кода.

Ответ 2

Вы используете LocalDb. Содержимое можно сохранить в файле. Вы можете указать местоположение с помощью строки подключения:

<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 должна совпадать с именем вашего файла DbContext.

Вы можете использовать Server Explorer в Visual Studio, чтобы открыть этот файл db и изучить его содержимое.

Ответ 3

В моем случае было достаточно подключиться к SQL EXPRESS → Свойства → Файлы и проверить столбец Path в таблице файлов базы данных.enter image description here