В этой статье поговорим о том, как связать ASP.NET Core MVC приложение с базой данных на MS SQL Server, используя технологию Entity Framework Core.
Данный материал актуален для версии .NET Core 2.2
Предположим, что имеется действующее ASP.NET Core MVC приложение, готовое к запуску. Это может быть или ваш собственный проект, или пустое приложение, созданное из шаблона. Также имеется готовый настроенный MS SQL Server. Перед нами стоит задача — настроить связь между приложением и сервером, то есть чтобы все данные приложения хранились в некоторой базе данных.
Во-первых, определим доменную модель, то есть что мы будем хранить в базе данных. Например, на нашем сайте пользователи смогут публиковать и редактировать статьи. Создадим подобный класс:
Во-вторых, нам понадобится так называемый контекст базы данных. Это специальный класс, который координирует работу Entity Framework между базой данных и доменной моделью нашего приложения.
В описанном выше классе важно следующее:
Далее переключаемся в класс Startup.cs, в метод ConfigureServices(). В этом месте непосредственно указывается вся конфигурация для нашего приложения, например, переадресация, кэш, сессия, маршрутизация и т.д. Нас в данном примере интересует настройки для контекста базы данных.
В коде выше мы регистрируем наш контекст и через опции указываем, что он будет подключаться к базе данных на сервере MS SQL. Далее в опциях сервера мы определяем строку подключения к базе данных. В данном примере строка подключения означает следующее:
- источник данных — локальный SQL-сервер.
- название базы данных — Articles.
- Persist Security Info=False — запрещаем получение важных данных из строки подключения после открытия соединения.
- MultipleActiveResultSets=True — также разрешаем возможность выполнения нескольких пакетов по одному соединению (MARS).
- Trusted_Connection=True — даем возможность при соединении использовать режим Windows-аутентификации.
* в вашем проекте строка подключения конечно же может отличаться.
К данному моменту мы определили доменную модель, создали пользовательский контекст базы данных, и также настроили его для работы. Все готово для создания первой миграции. Для работы с миграциями и вообще Entity Framework можно использовать либо командное окно в Visual Studio Package Manager Console, либо стандартный PowerShell. В данном примере воспользуемся первым вариантом.
Добавим новую первую миграцию с помощью команды:
add-migration _initial
Далее применим созданную миграцию и обновим базу данных. В нашем примере база данных еще не существует, и она будет создана. Применяем команду в Package Manager Console:
update-database
На данном этапе связь между веб-приложением и сервером баз данных установлена. Чтобы было удобнее работать со статьями и совершать над ними стандартные CRUD-операции (create, read, update, delete), создадим класс-репозиторий.
Благодаря классу-репозиторию мы скрываем детали работы контекста базы данных. Теперь все манипуляции со статьями будут проходить только через репозиторий. Также зарегистрируем репозиторий как сервис в классе Startup.cs в методе ConfigureServices(), чтобы была возможность использовать его в других классах.
Далее создадим новый контроллер, который и будет служить для всех операций со статьями.
Последнее что остается — это создать соответствующие представления. Далее представлена простейшая HTML-разметка.
Подключение (ConnectionString) приложения ASP.NET/.Net Core к серверу баз данных MSSQL осуществляется различными способами, в зависимости от используемого клиента базы данных.
Примеры подключения
Если вы используете SqlClient или EntityClient в качестве поставщика данных, то параметры подключения необходимо указать в файле web.config. В блоке добавьте соответствующую запись:
В сonnectionString укажите параметры подключения к базе данных:
- Data Source — расположение базы данных. Если БД расположена на том же сервере, что и ваш проект, то укажите localhost;
- Initial Catalog — название базы данных;
- User ID — имя пользователя базы данных;
- Рassword — пароль пользователя базы данных.
Для NetCore параметры подключения необходимо указать в файле appsettings.json.
В записи укажите следующие параметры:
- Data Source — расположение базы данных. Если БД расположена на том же сервере, что и ваш проект, то укажите localhost;
- Database — название базы данных;
- User ID — имя пользователя базы данных;
- Рassword — пароль пользователя базы данных.
Ошибка подключения и решение
При использовании значения LocalDB для параметра Data Source может возникнуть ошибка подключения к базе данных. Данный компонент входит только в редакцию MSSQL Express. На виртуальном хостинге REG.RU используется редакция MSSQL Web Edition.
Базу данных необходимо импортировать через панель управления хостингом, а для подключения рекомендуем использовать SqlClient или EntityClient.
Есть проект на ASP .NET Core, который подключается к базе MSSQL.
Проект подключается к базе в os windows и выдает ошибку "error: 25 — Connection string is not valid" в os x. В os x удается подключиться к базе через клиент DataGrip. Такж в os x удается подключиться через telnet к порту 1433.