Я хочу создать новый проект MVC с EF, чтобы использовать первый подход к базе данных.
Поэтому я создал новый проект MVC 5.2.3 в Visual Studio 2015 с помощью мастера, который создал по умолчанию учетную запись и модели управления пользователями, контроллеры и представления.
Строка подключения является своего рода
Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MyProject-20161112112119.mdf;Initial Catalog=aspnet-MyProject-20161112112119;Integrated Security=True" providerName="System.Data.SqlClient
И у меня есть несколько вопросов здесь:
В папке
App_Data
моего проекта нет файла mdf, поэтому я понятия не имею, куда, черт возьми, делась база данных.Я предполагаю, что приложение использует подход Code first по умолчанию, поэтому, очевидно, я хотел бы его изменить. Идея состоит в том, чтобы просто скопировать таблицы из внутренней базы данных проекта, созданной при настройке, и добавить их в мою новую базу данных, которую я буду использовать для первого подхода к базе данных. Но я не могу найти существующую базу данных приложения (см. пункт 1).
Я могу подключиться к серверу, который используется в строке подключения выше (
(LocalDb)\MSSQLLocalDB
) через Management Studio, но у него вообще нет баз данных, даже той, которая указана в строке подключения. И файла нет в папкеApp_Data
Поэтому я создал новую базу данных
MyProjectDb
на своем сервереlocalhost
с помощью Sql Server Management Studio с намерением использовать ее для первого подхода к базе данных.Я создал новый проект
MyProject.Database
в своем решении, чтобы использовать только что созданную базу данныхMyProjectDb
.Я проверил и вижу, что строка базы данных в свойствах проекта
MyProject.Database
имеет источник данных connstring как(LocalDb)/ProjectsV13
вместоlocalhost
. Вопрос почему такой странный источник, а не мойlocalhost
? И как заставить новый проект db создать базу данных на сервереlocalhost
?Затем я изменил свойства проекта базы данных (вкладка «Отладка») для использования в строке подключения
localhost
в качестве источника данных и новой созданной базы данныхMyProjectDb
.Теперь я щелкаю правой кнопкой мыши проект моей базы данных
MyProject.Database
: добавить> новый элемент> Таблица. Я создал таблицу.Теперь я вижу базу данных в обозревателе объектов SQL Server в папке
Projects-MyProject
, а также вижу базу данныхMyProjectDb
, которую я создал на своем сервереlocalhost
в SQL Server Management Studio. У первого есть таблица, которую я создал, у второго ее нет в разделе «Таблицы» (конечно, я обновил таблицы). Это странно, и я смущен, действительно ли это одни и те же базы данных или каким-то образом VS скопировал базу данных вместо использования той, которую я создал?Я щелкаю правой кнопкой мыши свой веб-проект в обозревателе решений: добавить> новый элемент> данные> модель данных объекта ADO.NET, я даю имя, на следующем экране я выбираю параметр
EF Designer from database
. Я нажимаю «Далее» и попадаю на экран, где я могу создатьNew connection
. Я нажимаю на это, и единственный сервер, который я могу выбрать из списка, — это серверNICKO-PC
. (Помните: проект db, который я создал в VS, по умолчанию использует сервер(LocalDb)?ProjectsV13
). Если я попытаюсь вставитьlocalhost
или что-то еще, он изменится обратно наNICKO-PC
, но я думаю, что это все равно то же самое, что и серверlocalhost
, потому что когда я расширяю доступные базы данных, моя база данныхMyProjectDb
есть в списке. Поэтому я выбираю его и иду дальше.Я получаю
Choose Your Database Objects And Settings
экран. И теперь я не вижу свою таблицу, созданную с помощью моего проектаMyProject.Database
. Нет таблицы, чтобы выбрать, чтобы быть более точным. Поэтому, очевидно, я не могу создавать объекты базы данных для использования в своем приложении.
Я застрял.
Надеюсь, мое описание событий не сбивает с толку.
Может ли кто-нибудь умный помочь мне сделать то, что я хочу, пожалуйста?
Я не знаю, почему веб-проект использовал файл db на каком-то странном сервере
(LocalDb)\MSSQLLocalDB
, а проект базы данных вместо этого создает его под(LocalDb)/ProjectsV13
?Как я могу создать свою собственную новую базу данных и использовать ее как для веб-приложения, так и для проекта базы данных, а затем создавать объекты на основе подхода db first?
Как получить таблицы и другие объекты в мастере объектов данных, которые я хочу создать в своем приложении?
Это в основном то, что мне нужно.
Пожалуйста, дайте мне знать, как вы создаете проект, используя подход Db First, потому что я ничего не получаю с мастерами студии VS.
Спасибо
* ИЗМЕНИТЬ *
Мой класс DbContext довольно прост и создан проектом MVC, который я установил вместе с пользовательскими моделями:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Он указывает на строку подключения по умолчанию, как вы можете видеть, которую я изменил, чтобы подключиться к моей недавно созданной базе данных MyProjectDb
.