Как добавить базу данных в visual studio asp net
Обзор
В этом руководстве показано, как подготовить проект к развертыванию базы данных. Структура базы данных и некоторые (не все) данные в двух базах данных приложения должны быть развернуты для тестирования, промежуточного хранения и рабочих сред.
Как правило, при разработке приложения вы вводите тестовые данные в базу данных, которую вы не хотите развертывать на динамическом сайте. Однако у вас также могут быть некоторые рабочие данные, которые требуется развернуть. В этом руководстве вы настроите проект Университета Contoso и подготовите SQL скрипты, чтобы при развертывании были включены правильные данные.
SQL Server Express LocalDB
В примере приложения используется SQL Server Express LocalDB. SQL Server Express является бесплатным выпуском SQL Server. Он обычно используется во время разработки, так как он основан на том же ядре СУБД, что и полные версии SQL Server. Вы можете протестировать SQL Server Express и убедиться, что приложение будет работать одинаково в рабочей среде, за исключением функций, которые различаются между выпусками SQL Server.
LocalDB — это специальный режим выполнения SQL Server Express, который позволяет работать с базами данных в виде MDF-файлов. Как правило, LocalDB файлы базы данных хранятся в папке App_Data веб-проекта. Функция экземпляра пользователя в SQL Server Express также позволяет работать с MDF-файлами, но функция экземпляра пользователя не рекомендуется. Поэтому для работы с MDF-файлами рекомендуется использовать LocalDB.
Как правило, SQL Server Express не используется для рабочих веб-приложений. LocalDB, в частности, не рекомендуется использовать в рабочей среде с веб-приложением, так как он не предназначен для работы со службами IIS.
В Visual Studio 2012 LocalDB устанавливается по умолчанию с Visual Studio. В Visual Studio 2010 и более ранних версиях SQL Server Express (без LocalDB) устанавливается по умолчанию с Visual Studio; поэтому вы установили его в качестве одного из необходимых компонентов в первом руководстве этой серии.
Дополнительные сведения о выпусках SQL Server, включая LocalDB, см. в следующих ресурсах, работающих с базами данных SQL Server.
Entity Framework и универсальные поставщики
Так как это программное обеспечение включается в пакеты NuGet, проект уже настроен так, чтобы необходимые сборки развертывались вместе с проектом. (Ссылки указывают на текущие версии этих пакетов, которые могут быть более новыми, чем установленные в начальном проекте, который вы скачали для этого руководства.)
При развертывании на стороннем поставщике услуг размещения вместо Azure убедитесь, что вы используете Entity Framework 5.0 или более поздней версии. В более ранних версиях Code First Migrations требуется полное доверие, и большинство поставщиков услуг размещения будут запускать приложение в среде среднего доверия. Дополнительные сведения о среднем доверии см. в руководстве по развертыванию в IIS в качестве тестовой среды .
Настройка Code First Migrations для развертывания базы данных приложений
База данных приложения Contoso University управляется Code First, и вы развернете ее с помощью Code First Migrations. Общие сведения о развертывании базы данных с помощью Code First Migrations см. в первом руководстве этой серии.
При развертывании базы данных приложения обычно не просто развертывать базу данных разработки со всеми данными в рабочей среде, так как большая часть данных в ней, вероятно, существует только для целей тестирования. Например, имена учащихся в тестовой базе данных вымышлены. С другой стороны, вы часто не можете развертывать только структуру базы данных без данных вообще. Некоторые данные в тестовой базе данных могут быть реальными и должны быть там, когда пользователи начинают использовать приложение. Например, в базе данных может быть таблица, содержащая допустимые значения оценок или реальные имена отделов.
Чтобы имитировать этот распространенный сценарий, вы настроите метод Code First Migrations Seed , который вставляет в базу данных только те данные, которые вы хотите поместить в рабочую среду. Этот Seed метод не должен вставлять тестовые данные, так как он будет выполняться в рабочей среде после Code First создает базу данных в рабочей среде.
В более ранних версиях Code First до выпуска миграции часто Seed используются методы вставки тестовых данных, так как при каждом изменении модели во время разработки база данных должна быть полностью удалена и повторно создана с нуля. При использовании Code First Migrations тестовые данные сохраняются после изменений базы данных, поэтому, включая тестовые данные в Seed методе, не требуется. Скачанный проект использует метод включения всех данных в Seed метод класса инициализатора. В этом руководстве вы отключите этот класс инициализатора и включите миграции. Затем вы обновите Seed метод в классе конфигурации Migrations, чтобы он вставлял только данные, которые требуется вставить в рабочую среду.
На следующей схеме показана схема базы данных приложения:
В этих руководствах предполагается, что Student таблицы и Enrollment таблицы должны быть пустыми при первом развертывании сайта. Другие таблицы содержат данные, которые необходимо предварительно загрузить при запуске приложения.
Отключение инициализатора
Так как вы будете использовать Code First Migrations, вам не нужно использовать DropCreateDatabaseIfModelChanges инициализатор Code First. Код для этого инициализатора находится в файле SchoolInitializer.cs в проекте ContosoUniversity.DAL. Параметр в элементе appSettings файла Web.config приводит к тому, что этот инициализатор запускается каждый раз, когда приложение пытается получить доступ к базе данных в первый раз:
Откройте файл Web.config приложения и удалите или закомментируйте add элемент, указывающий класс инициализатора Code First. Теперь appSettings элемент выглядит следующим образом:
Другой способ указать класс инициализатора — вызвать Database.SetInitializer Application_Start метод в файле Global.asax . Если вы включаете миграции в проекте, использующего этот метод для указания инициализатора, удалите эту строку кода.
Включение Code First Migrations
Убедитесь, что проект ContosoUniversity (не ContosoUniversity.DAL) задан в качестве запускаемого проекта. В Обозреватель решений щелкните правой кнопкой мыши проект ContosoUniversity и выберите "Задать в качестве запуска Project". Code First Migrations будет искать строку подключения к базе данных в запускаемом проекте.
В меню "Сервис" выберите NuGet диспетчер пакетов>диспетчер пакетов Консоль.
В верхней части окна консоли диспетчер пакетов выберите ContosoUniversity.DAL в качестве проекта по умолчанию, а затем в PM> командной строке введите "enable-migrations".
Эта команда создает папку Migrations в проекте ContosoUniversity.DAL и помещает в нее два файла: файл Configuration.cs , который можно использовать для настройки миграций, и файл InitialCreate.cs для первой миграции, создающей базу данных.
Вы выбрали проект DAL в раскрывающемся списке проекта по умолчаниюконсоли диспетчер пакетов, так как enable-migrations команда должна выполняться в проекте, содержающем класс контекста Code First. Если этот класс находится в проекте библиотеки классов, Code First Migrations ищет строку подключения к базе данных в запускаемом проекте для решения. В решении ContosoUniversity веб-проект был задан в качестве запускаемого проекта. Если вы не хотите назначить проект с строкой подключения в качестве запускаемого проекта в Visual Studio, можно указать запускаемый проект в команде PowerShell. Чтобы просмотреть синтаксис команды, введите команду get-help enable-migrations .
Команда enable-migrations автоматически создала первую миграцию, так как база данных уже существует. Кроме того, миграции создают базу данных. Для этого используйте обозреватель сервера или SQL Server обозреватель объектов для удаления базы данных ContosoUniversity перед включением миграций. После включения миграции создайте первую миграцию вручную, введя команду add-migration InitialCreate. Затем можно создать базу данных, введя команду update-database.
Настройка метода Seed
В этом руководстве вы добавите фиксированные данные, добавив код в Seed метод класса Code First Migrations Configuration . Code First Migrations вызывает метод после каждой Seed миграции.
Откройте файл Configuration.cs и замените комментарии в методе Seed следующим кодом:
Ссылки на List красные волнистые линии под ними, так как у вас еще нет инструкции using для своего пространства имен. Щелкните правой List кнопкой мыши один из экземпляров и выберите команду "Разрешить", а затем выберите "System.Collections.Generic".
Этот пункт меню добавляет следующий код в using инструкции в верхней части файла.
Нажмите клавиши CTRL-SHIFT-B, чтобы создать проект.
Теперь проект готов к развертыванию базы данных ContosoUniversity . После развертывания приложения при первом запуске и переходе на страницу, которая обращается к базе данных, Code First создаст базу данных и запустит этот Seed метод.
Добавление кода в Seed метод является одним из многих способов вставки фиксированных данных в базу данных. Альтернативой является добавление кода в Up методы и Down методы каждого класса миграции. Методы Up содержат Down код, реализующий изменения базы данных. Примеры этих примеров вы увидите в руководстве по развертыванию обновления базы данных .
Вы также можете написать код, который выполняет SQL инструкции Sql с помощью метода. Например, если вы добавили столбец "Бюджет" в таблицу Department и хотите инициализировать все бюджеты отдела до $1000,00 в рамках миграции, можно добавить следующую строку кода в Up метод для этой миграции:
Sql("UPDATE Department SET Budget = 1000");
Создание скриптов для развертывания базы данных членства
Запустите приложение и щелкните "Курсы", а затем нажмите кнопку "Обновить кредиты".
Откроется страница входа, так как для страницы "Обновление кредитов " требуются права администратора.
Введите имя пользователя администратора и devpwd в качестве пароля и нажмите кнопку "Войти".
Откроется страница "Обновить кредиты ".
Сведения о пользователях и ролях содержатся в базе данных aspnet-ContosoUniversity , указанной строкой подключения DefaultConnection в файлеWeb.config .
Эта база данных не управляется платформой Entity Framework Code First, поэтому вы не можете использовать миграции для ее развертывания. Вы будете использовать поставщик dbDacFx для развертывания схемы базы данных, и вы настроите профиль публикации для запуска скрипта, который будет вставлять исходные данные в таблицы базы данных.
Здесь же обычно не нужны те же данные в рабочей среде, которые у вас есть в разработке. При первом развертывании сайта обычно исключается большинство или все учетные записи пользователей, создаваемые для тестирования. Таким образом, скачанный проект содержит две базы данных членства: aspnet-ContosoUniversity.mdf с пользователями разработки и aspnet-ContosoUniversity-Prod.mdf с рабочими пользователями. В этом руководстве имена пользователей одинаковы в обеих базах данных: admin и nonadmin. Оба пользователя имеют пароль devpwd в базе данных разработки и prodpwd в рабочей базе данных.
Вы развернете пользователей разработки в тестовой среде и рабочих пользователях в промежуточной и рабочей среде. Для этого вы создадите два скрипта SQL в этом руководстве, один для разработки и один для рабочей среды, а в последующих руководствах вы настроите процесс публикации для их запуска.
Скрипты развертывания данных можно создавать вручную с помощью SQL Server Management Studio (SSMS) или с помощью стороннего средства. В оставшейся части этого руководства вы узнаете, как это сделать в SSMS, но если вы не хотите устанавливать и использовать SSMS вы можете получить скрипты из готовой версии проекта и перейти к разделу, в котором они хранятся в папке решения.
Чтобы установить SSMS, установите его из Центра загрузки: Microsoft SQL Server 2012 Express, щелкнув ENU\x64\SQLManagementStudio_x64_ENU.exe или ENU\x86\SQLManagementStudio_x86_ENU.exe. Если вы выберете неправильный вариант для системы, она не сможет установиться, и вы можете попробовать другую.
(Обратите внимание, что это скачивание в 600 мб. Установка может занять много времени и потребует перезагрузки компьютера.)
На первой странице центра установки SQL Server щелкните "Создать SQL Server автономную установку" или добавьте компоненты в существующую установку и следуйте инструкциям, принимая варианты по умолчанию.
Создание скрипта базы данных разработки
В диалоговом окне Подключение на сервер введите (localdb)\v11.0 в качестве имени сервера, оставьте для проверки подлинности значение Windows authentication и нажмите кнопку Подключение.
В окне обозреватель объектов разверните узел "Базы данных", щелкните правой кнопкой мыши aspnet-ContosoUniversity, выберите "Задачи" и выберите команду "Создать скрипты".
В диалоговом окне "Создание и публикация скриптов " нажмите кнопку "Задать параметры скрипта".
Шаг "Выбор объектов " можно пропустить, так как по умолчанию используется скрипт всей базы данных и все объекты базы данных , и это то, что вы хотите.
Щелкните Дополнительно.
В диалоговом окне "Дополнительные параметры скрипта" прокрутите вниз до типа данных в скрипт и выберите параметр "Только данные " в раскрывающемся списке.
Измените скрипт USE DATABASE на False. Инструкции USE недопустимы для База данных SQL Azure и не требуются для развертывания для SQL Server Express в тестовой среде.
В диалоговом окне "Создание и публикация скриптов " в поле "Имя файла " указывается место создания скрипта. Измените путь к папке решения (папке с файлом ContosoUniversity.sln) и имени файла на aspnet-data-dev.sql.
Создание скрипта рабочей базы данных
Так как проект не запущен с рабочей базой данных, он еще не подключен к экземпляру LocalDB. Поэтому сначала необходимо подключить базу данных.
В обозреватель объектов SSMS щелкните правой кнопкой мыши базы данных и выберите команду "Присоединить".
В диалоговом окне "Присоединение баз данных " нажмите кнопку "Добавить ", а затем перейдите к файлу aspnet-ContosoUniversity-Prod.mdf в папке App_Data .
Выполните ту же процедуру, которая использовалась ранее для создания скрипта для рабочего файла. Назовите файл скрипта aspnet-data-prod.sql.
Сводка
Обе базы данных теперь готовы к развертыванию, и в папке решения есть два скрипта развертывания данных.
В следующем руководстве описана настройка параметров проекта, влияющих на развертывание, и вы настраиваете автоматические преобразования файловWeb.config для параметров, которые должны отличаться в развернутом приложении.
Дополнительные сведения
Дополнительные сведения о NuGet см. в разделе "Управление библиотеками Project" с помощью NuGet и документации по NuGet. Если вы не хотите использовать NuGet, необходимо узнать, как анализировать пакет NuGet, чтобы определить, что он делает при установке. (Например, он может настроить преобразованияWeb.config, настроить скрипты PowerShell для выполнения во время сборки и т. д.) Дополнительные сведения о том, как работает NuGet, см. в разделе "Создание и публикация файла пакета" и "Файл конфигурации" и преобразования исходного кода.
Объект MvcMovieContext обрабатывает задачу подключения к базе данных и сопоставления объектов Movie с записями базы данных. Контекст базы данных регистрируется с помощью контейнера внедрения зависимостей в файле :
Если приложение развертывается на тестовом или рабочем сервере, можно задать строку подключения к рабочему SQL Server с помощью переменной среды. Дополнительные сведения см. в разделе Конфигурация.
SQL Server Express LocalDB
- — это упрощенная версия ядра СУБД SQL Server Express, устанавливаемая по умолчанию с Visual Studio.
- Запускается по требованию с помощью строки подключения.
- Используется для разработки программ. Запускается в пользовательском режиме, поэтому конфигурация не слишком сложная.
- По умолчанию создает файлы .mdf в каталоге C:/Users/ .
SQLite
На веб-сайте SQLite указывается следующее:
SQLite — это автономная внедряемая полнофункциональная общедоступная система управления базами данных SQL с высокой степенью надежности. На данный момент SQLite является самой популярной СУБД в мире.
Для просмотра баз данных SQLite, а также управления ими можно использовать множество самых разных сторонних инструментов. На следующем рисунке показан DB Browser для SQLite. Если вы предпочитаете использовать другое средство для работы с SQLite, напишите нам в комментариях, чем именно оно нравится вам.
В этом руководстве используется функция миграции Entity Framework Core, где это возможно. Во время миграции обновляется схема базы данных в соответствии с изменениями в модели данных. Но миграции могут вносить только изменения, которые поддерживает поставщик EF Core, а возможности поставщика SQLite ограничены. Например, добавление столбца поддерживается, но удаление или изменение столбца не поддерживается. Если миграция создается для удаления или изменения столбца, команда ef migrations add выполняется успешно, а команда ef database update — нет. Из-за этих ограничений в этом руководстве не используются миграции для изменения схемы SQLite. Вместо этого при изменении схемы нужно удалить и снова создать базу данных.
Обходной путь для ограничений SQLite — вручную написать код миграции для перестроения таблицы в случае изменений. Перестроение таблицы включает в себя:
- Создание новой таблицы.
- Копирование данных из старой таблицы в новую.
- Удаление старой таблицы.
- Переименование новой таблицы.
Дополнительные сведения см. в следующих ресурсах:
Заполнение базы данных
Создайте класс SeedData в папке SeedData . Замените сгенерированный код следующим кодом:
Если в базе данных есть фильмы, возвращается инициализатор заполнения и фильмы не добавляются.
Добавление инициализатора заполнения
Замените все содержимое Program.cs следующим кодом: Новый код выделен.
Удалите все записи в базе данных. Это можно сделать с помощью ссылок удаления в браузере или из SSOX.
Тестирование приложения. Приложение должно выполнить инициализацию, вызывая код в файле Program.cs , чтобы запустить метод заполнения. Чтобы выполнить инициализацию принудительно, закройте окно командной строки, открытое Visual Studio, и перезапустите, нажав клавиши CTRL+F5.
Обновите файл Program.cs , используя следующий выделенный код:
Удалите все записи в базе данных.
Тестирование приложения. Остановите и запустите снова, чтобы выполнить метод SeedData.Initialize и заполнить базу данных.
В приложении будут отображены данные.
Авторы: Рик Андерсон (Rick Anderson) и Джон П. Смит (Jon P Smith)
Объект MvcMovieContext обрабатывает задачу подключения к базе данных и сопоставления объектов Movie с записями базы данных. Контекст базы данных регистрируется с помощью контейнера внедрения зависимостей в методе ConfigureServices в файле Startup.cs :
Если приложение развертывается на тестовом или рабочем сервере, можно задать строку подключения к рабочему SQL Server с помощью переменной среды. Дополнительные сведения см. в разделе Конфигурация.
SQL Server Express LocalDB
- — это упрощенная версия ядра СУБД SQL Server Express, устанавливаемая по умолчанию с Visual Studio.
- Запускается по требованию с помощью строки подключения.
- Используется для разработки программ. Запускается в пользовательском режиме, поэтому конфигурация не слишком сложная.
- По умолчанию создает файлы .mdf в каталоге C:/Users/ .
Проверка базы данных
В меню Вид откройте обозреватель объектов SQL Server (SSOX).
Щелкните правой кнопкой мыши таблицу Movie Movie .
Обратите внимание на значок с изображением ключа рядом с ID . По умолчанию EF сделает свойство с именем ID первичным ключом.
Щелкните правой кнопкой мыши таблицу Movie Movie .
SQLite
На веб-сайте SQLite указывается следующее:
SQLite — это автономная внедряемая полнофункциональная общедоступная система управления базами данных SQL с высокой степенью надежности. На данный момент SQLite является самой популярной СУБД в мире.
Для просмотра баз данных SQLite, а также управления ими можно использовать множество самых разных сторонних инструментов. На следующем рисунке показан DB Browser для SQLite. Если вы предпочитаете использовать другое средство для работы с SQLite, напишите нам в комментариях, чем именно оно нравится вам.
В этом руководстве используется функция миграции Entity Framework Core, где это возможно. Во время миграции обновляется схема базы данных в соответствии с изменениями в модели данных. Но миграции могут вносить только изменения, которые поддерживает поставщик EF Core, а возможности поставщика SQLite ограничены. Например, добавление столбца поддерживается, но удаление или изменение столбца не поддерживается. Если миграция создается для удаления или изменения столбца, команда ef migrations add выполняется успешно, а команда ef database update — нет. Из-за этих ограничений в этом руководстве не используются миграции для изменения схемы SQLite. Вместо этого при изменении схемы нужно удалить и снова создать базу данных.
Обходной путь для ограничений SQLite — вручную написать код миграции для перестроения таблицы в случае изменений. Перестроение таблицы включает в себя:
- Создание новой таблицы.
- Копирование данных из старой таблицы в новую.
- Удаление старой таблицы.
- Переименование новой таблицы.
Дополнительные сведения см. в следующих ресурсах:
Заполнение базы данных
Создайте класс SeedData в папке SeedData . Замените сгенерированный код следующим кодом:
Если в базе данных есть фильмы, возвращается инициализатор заполнения и фильмы не добавляются.
Добавление инициализатора заполнения
Замените все содержимое Program.cs следующим кодом:
Проверьте работу приложения.
Удалите все записи в базе данных. Это можно сделать с помощью ссылок удаления в браузере или из SSOX.
Приложение должно выполнить инициализацию, вызывая методы в классе Startup , чтобы запустить метод заполнения. Для этого следует остановить и перезапустить IIS Express. Воспользуйтесь одним из перечисленных ниже подходов.
Щелкните правой кнопкой мыши значок IIS Express в области уведомлений и выберите Выйти или Остановить сайт.
- Если среда VS была запущена в режиме без отладки, нажмите клавишу F5 для запуска в режиме отладки.
- Если среда VS была запущена в режиме отладки, остановите отладчик и нажмите клавишу F5.
Удалите все записи в базе данных. Остановите приложение и запустите снова, чтобы выполнить метод SeedData.Initialize и заполнить базу данных.
Visual Studio можно использовать для создания и обновления файла локальной базы данных в SQL Server Express LocalDB. можно также создать базу данных, выполнив инструкции Transact-SQL в окне инструментов SQL Server обозреватель объектов в Visual Studio. В этом разделе мы создадим MDF файл и добавим таблицы и ключи с помощью Конструктор таблиц.
Предварительные требования
Создание проекта и файла локальной базы данных
в строке меню выберите Project > добавить новый элемент.
В списке шаблонов элементов прокрутите вниз и выберите база данных на основе службы.
Присвойте базе данных имя сампледатабасе и нажмите кнопку Добавить.
Добавление источника данных
если окно источники данных не открыто, откройте его, нажав клавиши Shift + Alt + D или выбрав просмотреть > другие Windows > источники данных в строке меню.
В окне Источники данных выберите Добавить новый источник данных.
Откроется Мастер настройки источника данных .
На странице Выбор типа источника данных выберите база данных , а затем нажмите кнопку Далее.
На странице Выбор модели базы данных нажмите кнопку Далее , чтобы принять значение по умолчанию (набор данных).
На странице Выбор подключения к данным выберите файл сампледатабасе. mdf в раскрывающемся списке и нажмите кнопку Далее.
На странице сохранить строку подключения в файле конфигурации приложения нажмите кнопку Далее.
Просмотр свойств подключения к данным
чтобы просмотреть строку подключения для файла сампледатабасе. mdf , откройте окно свойств подключения к данным:
выберите просмотреть > SQL Server обозреватель объектов , чтобы открыть окно SQL Server обозреватель объектов . Разверните узел (LocalDB) \MSSQLLocalDB > базы данных, а затем щелкните правой кнопкой мыши сампледатабасе. mdf и выберите пункт Свойства.
Кроме того, можно выбрать пункт Просмотреть > Обозреватель сервера, если это окно еще не открыто. откройте окно свойств, развернув узел подключения к данным , щелкнув правой кнопкой мыши сампледатабасе. mdf и выбрав пункт свойства.
если не удается развернуть узел подключения к данным или отсутствует подключение сампледатабасе. mdf, нажмите кнопку Подключение к базе данных на панели инструментов обозреватель сервера. в диалоговом окне добавление соединения убедитесь, что в поле источник данных выбран Microsoft SQL Server файл базы данных , а затем найдите и выберите файл сампледатабасе. mdf. Завершите добавление подключения, нажав кнопку ОК.
Создание таблиц и ключей с помощью конструктор таблиц
В этом разделе вы создадите две таблицы, первичный ключ в каждой таблице и несколько строк образца данных. Вы также создадите внешний ключ, чтобы указать, как записи в одной таблице соответствуют записям в другой таблице.
Создание таблицы Customers
В Обозреватель сервера разверните узел подключения к данным , а затем узел сампледатабасе. mdf .
если не удается развернуть узел подключения к данным или отсутствует подключение сампледатабасе. mdf, нажмите кнопку Подключение к базе данных на панели инструментов обозреватель сервера. в диалоговом окне добавление соединения убедитесь, что в поле источник данных выбран Microsoft SQL Server файл базы данных , а затем найдите и выберите файл сампледатабасе. mdf. Завершите добавление подключения, нажав кнопку ОК.
Щелкните правой кнопкой мыши таблицы и выберите команду Добавить новую таблицу.
Будет открыт Конструктор таблиц, отобразится сетка с одной строкой по умолчанию, которая представляет один столбец в создаваемой таблице. Путем добавления строк в сетку будут добавлены столбцы в таблицу.
В сетке добавьте строку для каждой из следующих записей.
Щелкните CustomerID строку правой кнопкой мыши и выберите пункт Задать первичный ключ.
Щелкните строку по умолчанию ( Id ) правой кнопкой мыши и выберите пункт Удалить.
Назовите таблицу "Клиенты" путем обновления первой строки в области скриптов, как показано в следующем примере:
Добавьте ограничение индекса в таблицу Customers. Добавьте запятую в конце Phone строки, а затем добавьте следующий пример перед закрывающей круглой скобкой:
Отобразятся примерно следующие сведения:
В левом верхнем углу Конструктор таблиц выберите Обновить или нажмите клавиши SHIFT + ALT + U.
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Таблица Customers создается в файле локальной базы данных.
Создание таблицы Orders
Создайте еще одну таблицу, а затем добавьте строку для каждой записи следующей таблицы.
Задайте OrderID в качестве первичного ключа, а затем удалите строку по умолчанию.
Назовите таблицу "Заказы" путем обновления первой строки в области скриптов, как показано в следующем примере:
Добавьте ограничение индекса в таблицу Customers. Добавьте запятую в конце OrderQuantity строки, а затем добавьте следующий пример перед закрывающей круглой скобкой:
В левом верхнем углу Конструктор таблиц выберите Обновить или нажмите клавиши SHIFT + ALT + U.
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Таблица Orders создается в файле локальной базы данных. Если развернуть узел таблицы в обозреватель сервера, отобразятся две таблицы:
Если вы не видите его, нажмите кнопку Обновить на панели инструментов.
Создание внешнего ключа
В контекстной области в правой части сетки конструктор таблиц для таблицы Orders щелкните правой кнопкой мыши внешние ключи и выберите Добавить новый внешний ключ.
В появившемся текстовом поле замените текст ToTable на Customers.
в области T-SQL обновите последнюю строку, чтобы она соответствовала следующему примеру:
В левом верхнем углу Конструктор таблиц выберите Обновить (SHIFT + ALT + U).
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Создается внешний ключ.
Заполнение таблиц данными
в обозреватель сервера или SQL Server обозреватель объектов разверните узел образца базы данных.
Откройте контекстное меню для узла таблицы , выберите Обновить, а затем разверните узел таблицы .
Откройте контекстное меню таблицы Customers и выберите Показать данные таблицы или Просмотреть данные.
Добавьте необходимые данные для некоторых клиентов.
Можно указать любые пять символов как ИД клиентов, но хотя бы один нужно выбрать и запомнить для дальнейшего использования в этой процедуре.
Откройте контекстное меню для таблицы Orders, а затем выберите Показать данные таблицы или Просмотреть данные.
Добавление данных для некоторых заказов. При вводе каждой строки она сохраняется в базе данных.
Убедитесь, что все идентификаторы заказов и количества заказов — целые числа, и каждый идентификатор клиента соответствует значению, указанному в столбце CustomerID таблицы клиентов.
Поздравляем! Теперь вы умеете создавать таблицы, связывать их с внешним ключом и добавлять данные.
Чтобы хранить данные, нам естественным образом нужна база данных. Как правило, в качестве базы данных используется MS SQL Server, на примере которого мы и посмотрим весь процесс создания БД и подключения к ней.
Мы можем создать базу данных прямо в проекте, либо же создать ее на сервере MS SQL. Для хранения баз данных проекте у нас предназначена папка App_Data. Для этого нажмем правой кнопкой мыши на папку App_Data и в появившемся контекстном меню выберем Add-> New Item. . В появившемся окне добавления нового элемента выберем SQL Server Database и назовем новую базу данных Bookstore.mdf:
Мы можем создать базу данных равнозначным образом и на сервере. После этого база данных добавляется в проект, и мы можем увидеть ее в папке App_Data. Теперь в обозревателе баз данных (окно Database Explorer ) мы можем подключиться к ней и создать таблицы, которые будут хранить данные.
Раскроем узел Bookstore.mdf и найдем узел Tables. Нажмем на этот узел правой кнопкой мыши и в появившемся меню выберем пункт Add New Table . И перед нами появится окно, в котором нам надо определить названия и типы столбцов новой таблицы. По соглашениям о наименованиях таблицы при работе с Entity Framework должны соответствовать имени модели. То есть, так как наша модель называется Book , то таблица будет называться Books . А Entity Framework автоматически распознает, что таблица Books соответствует классу Book .
Итак, создадим структуру таблицы:
Не забудьте установить ниже в окне Properties (в Visual Stidio 2010 - окно Column Properties) для столбца Id соответствующие параметры для первичного ключа:
После этого, если мы работаем с Visual Studio 2010, нам будет предложено просто ввести имя таблицы - введем имя Books, и затем таблица добавляется в БД.
А в Visual Studio Express 2012 for Web нам надо сгенерировать таблицу на основе заданного выше определения. Для этого нажмем на кнопку Update:
В появившемся диалоговом окне нажмем на кнопку Update Database. После этого в нашу базу данных добавляется только что сгенерированная таблица. Подобным образом определим таблицу Purchases для модели Purchase:
Добавим в таблицу Books несколько записей:
Теперь, во-первых, чтобы взаимодействовать с БД, нам нужен класс контекста данных, пусть это будет следующий класс BookContext:
Во-вторых, определим строку подключения к БД. Для этого откроем файл Web.config и добавим в конец секции configuration определение строки подключения. Однако тут надо сразу заметить, что для Visual Studio 2010 строка подключения будет отличаться от строки подключения, которая используется в Visual Studio 2012.
Итак, строка подключения для Visual Studio 2010 будет выглядеть так:
Для Visual Studio 2012 будет выглядеть определение строки подключения будет выглядеть следующим образом:
В Visual Studio 2012 в отличие от 2010-й версии мы можем использовать режим LocalDB, который предназначен прежде всего для разработчиков, представляя некоторую упрощенную версию. Поэтому в данном случае в качестве источника данных используется (LocalDB)\v11.0.
Обратите внимание, что в обоих случаях свойство name="BookContext" должно содержать название контекста данных.
Использование подстановки |DataDirectory| позволяет опустить полный физический путь к базе данных, которая хранится в папке App_Data.
Теперь мы можем получить содержимое таблицы Books в контроллере Home:
И вывести данные в представлении Index.cshtml:
Закрытие подключения
Чтобы наверняка быть уверенным, что подключение к базе данных закрыто, следует вызывать метод Dispose у контекста данных:
Это переопределенная версия метода Dispose контроллера, которая вызывается при уничтожении объекта контроллера. В нее помещается вызов db.Dispose() , который уничтожает все связанные с контекстом данных ресурсы и подключения.
Мы можем создать базу данных прямо в проекте, либо же создать ее на сервере MS SQL. Для хранения баз данных в проекте предназначена папка App_Data . Итак, нажмем на папку App_Data правой кнопкой мыши и в появившемся контекстном меню выберем Add-> New Item. . В появившемся окне добавления нового элемента выберем SQL Server Database и назовем новую базу данных Bookstore.mdf:
После этого в папку папку App_Data будет добавлена база данных, и мы можем начинать с ней работать - добавлять таблицы и данные. Но перед этим посмотрим, что у нас будет хранится в БД. Для работы с БД возьмем модели из предыдущих глав - модель Book:
И модель Purchase:
Пусть для работы с ними определен следующий контекст данных:
Чтобы связать приложение, контекст данных и БД, добавим в файл web.config строку подключения к этой базе данных. Для этого после секции configSections вставим следующую секцию:
Обратите внимание, что значени атрибута name ( name="BookContext" ) в качестве значения имеет название контекста данных.
В Visual Studio мы можем использовать LocalDB. LocalDB представляет облегченную версию движка баз данных SQL Sever Express, которая специально нацелена на разработчиков. Поэтому в данном случае в качестве источника данных указываем (LocalDB)\MSSQLLocalDB .
Использование подстановки |DataDirectory| позволяет опустить полный физический путь к базе данных, которая хранится в папке App_Data.
Если мы используем не движок localdb, а полноценный MS SQL Server, то тогда в строку подключения включается название сервера:
Кроме того, здесь также вместо AttachDbFilename используется название каталога бд "Initial Catalog".
Для других СУБД - MySQL, MongoDB, Postgre и т.д. строка подключения также может отличаться. Но в данном случае мы будем использовать LocalDB.
Теперь создадим сами таблицы. Для этого перейдем в окно Server Explorer и раскроем в нем узел Data Connections. Далее мы увидим узел BookContext, который представляет нашу БД, и также раскроем его:
Добавим первую таблицу. Для этого нажмем правой кнопкой мыши на узел Tables и в появившемся меню выберем пункт Add New Table . После этого отобразится окно дизайнера таблицы, в котором надо определить названия и типы столбцов новой таблицы. По соглашениям о наименованиях таблицы при работе с Entity Framework названия таблиц должны соответствовать имени модели. Например, если модель называется Book, то таблица будет называться Books . А Entity Framework автоматически распознает, что таблица Books соответствует классу Book .
Итак, создадим структуру таблицы:
Также поскольку предполагается, что столбец Id будет инкрементироваться с добавлением каждого нового объекта, то установим для него автоинкремент в окне Properties:
И последний шаг - генерация базы данных. Для этого нажмем на кнопку Update:
В появившемся диалоговом окне нажмем на кнопку Update Database. После этого в нашу базу данных добавится новая таблица. Подобным образом определим таблицу Purchases для модели Purchase:
Добавим в дизайнере баз данных в таблицу Books несколько записей. Для этого нажмем в окне Server Explorer на узел Books и выберем в появившемся списке пункт Show Table Data. Добавим, к примеру, следующий набор записей:
Теперь мы можем получить эти данные в контроллере Home и передать их в представление:
Вывод данных в представлении Index.cshtml:
Закрытие подключения
Чтобы наверняка быть уверенным, что подключение к базе данных закрыто, следует вызывать метод Dispose у контекста данных:
Это переопределенная версия метода Dispose контроллера, которая вызывается при уничтожении объекта контроллера. В нее помещается вызов db.Dispose() , который уничтожает все связанные с контекстом данных ресурсы и подключения.
Читайте также: