Entity Framework 4 Code First: Где находится моя база данных? - PullRequest
3 голосов
/ 19 марта 2012

Создание веб-сайта с использованием кода в первую очередь, для моего собственного разума я хотел бы иметь возможность исследовать базу данных, которую он создает, как вы, когда вы впервые используете базу данных и создаете базу данных SQL-сервера в VS2010.

Я осмотрелся, и единственная связанная с этим информация, которую я могу найти, кажется, использует ранее существующую БД с кодом вначале, я хочу, чтобы БД была создана сначала кодом, и я просто хочу знать, гдеэто так, или как изменить его расположение по умолчанию, чтобы я мог посмотреть в нем.

У меня была скрипка со строками подключения в файле конфигурации, но я не знаю, что я делаю такне имел никакого успеха там.Он работал нормально со строкой соединения custon, но я до сих пор не знаю, где находится файл db!

Ответы [ 7 ]

8 голосов
/ 08 апреля 2015
C:\Users\YourCurrentUserName  

Я нашел его в каталоге выше.
Выполнив поиск в Windows по имени класса Context.

7 голосов
/ 12 сентября 2012

EF Code First имеет несколько способов определения, где и как создается база данных.Фактически он имеет ряд Условных обозначений (вместо конкретной конфигурации или кода).Я предпочитаю быть конкретным (см. Мой пример строки подключения ниже), но если вы используете соглашение, оно определяется Microsoft следующим образом:

Вот фрагмент этой страницы:

СоединениеString Convention

Entity Framework использует соглашения по умолчанию для создания базы данных на экземпляре localhost \ SQLEXPRESS или сервере LocalDB , а именует базу данных после полного имени типа производного контекста (например, CodeFirstModel.SchoolEntities).

Visual Studio 11 включает в себя сервер базы данных LocalDb, а не SQLEXPRESS.Во время установки пакет EntityFramework NuGet проверяет, какой сервер базы данных доступен.Пакет NuGet затем обновит файл конфигурации, установив сервер базы данных по умолчанию, который Code First использует при создании соединения по соглашению.Если SQLEXPRESS запущен, он будет использован.Если SQLEXPRESS недоступен, вместо этого LocalDb будет зарегистрирован по умолчанию.В файл конфигурации не вносятся изменения, если он уже содержит настройку для фабрики соединений по умолчанию.Если строка соединения установлена ​​в коде, то экземпляр, установленный в коде, будет иметь приоритет над всем, что найдено в файле конфигурации.

Когда приложение запускается в последующие времена, если модель не изменяется, существующая база данных будетиспользуемый.Если модель изменяется, и вы не устанавливаете инициализатор, вы получите исключение: «Модель, поддерживающая контекст« ContextName », изменилась с момента создания базы данных.Рассмотрите возможность использования Code First Migrations для обновления базы данных ».

Один из способов переопределить соглашение Code First для имени базы данных - добавить файл App.config или Web.config, содержащий строку подключения с тем же именем.как ваш тип контекста.Файл .config должен быть добавлен в проект, содержащий исполняемую сборку.

Примечание. При работе с Code First строка подключения должна быть обычной строкой подключения к базе данных.При работе с Entity Framework Designer строка подключения должна быть строкой EntityConnection.

Ниже приведен пример одной из моих строк подключения EF Code First:

<add name="NameOfYourDbContextClass" connectionString="Data Source=YOUR-DB-SERVER;Initial Catalog=THE-DB-NAME-YOU-WANT;Persist Security Info=True;Trusted_Connection=true;" providerName="System.Data.SqlClient" />

И последнее, что нужно иметь в виду ... строки соединения (и конфигурация в целом) определяются контекстом приложения.Другими словами, если у вас есть класс доступа к данным (основанный на DbContext) в другом проекте, строки соединения все еще должны быть определены в вашем файле web.config (в веб-проекте) в качестве примера.

УдачиБен!

0 голосов
/ 13 июля 2018

Как сказал @SAm, вы можете искать файл вашей базы данных по имени классового класса, который его формирует, и в некоторых случаях по умолчанию это приведет вас к файлу в вашем пользовательском каталоге. У меня были проблемы с подключением к этой базе данных в VS Server Explorer, потому что я не знал имени подключения. Поэтому вместо этого я добавил файл базы данных с помощью Соединения данных -> Добавить соединение ... -> Изменить источник данных -> Файл базы данных Microsoft SQL Server. Это подтолкнуло меня к поиску файла базы данных, который мы нашли, который дал мне соединение, и который, в свою очередь, дал мне строку соединения, которая viola ! указывает, что база данных также хранится в (LocalDB)\MSSQLLocalDB. Нашел много хороших баз данных, с которыми я возился там.

0 голосов
/ 20 февраля 2016

привет @kingDango это даст строку подключения и имя сервера ..

 Console.WriteLine(ac.Database.Connection.ConnectionString);

используйте это имя сервера в sql server management studio и вставьте в поле сервера и подключитесь .. Вы можете найти базу данных ..

или во втором случае это может быть в App_Data

0 голосов
/ 19 марта 2012

Предположим, вы создаете свой класс POCO, например, YourContext: DbContext 1. Если вы определили строку подключения с именем = YourContext, чем вы подключаетесь к конкретной базе данных.2. В противном случае ваша база данных будет создана на локальном экземпляре SQLEXPRESS с именем YOUR_NAMESPACE.YourContext

0 голосов
/ 19 марта 2012

Если вы используете sql server или sql server express, вам понадобится Sql Server Management Studio

Если вы используете компактную версию, то в вашем решении должен быть файл под app_data,Вы сможете определить это, взглянув на свой файл Web.config.

0 голосов
/ 19 марта 2012

Скотт Гу сначала написал хорошую статью о коде. Вы можете выполнить поиск соединения, если хотите перейти непосредственно к части о строках соединения, а затем Generate объяснит процесс генерации.

...