Меню Закрыть

Asp net core подключение к базе данных

В этой статье поговорим о том, как связать ASP.NET Core MVC приложение с базой данных на MS SQL Server, используя технологию Entity Framework Core.

  • Данный материал актуален для версии .NET Core 2.2

    Предположим, что имеется действующее ASP.NET Core MVC приложение, готовое к запуску. Это может быть или ваш собственный проект, или пустое приложение, созданное из шаблона. Также имеется готовый настроенный MS SQL Server. Перед нами стоит задача — настроить связь между приложением и сервером, то есть чтобы все данные приложения хранились в некоторой базе данных.

    Во-первых, определим доменную модель, то есть что мы будем хранить в базе данных. Например, на нашем сайте пользователи смогут публиковать и редактировать статьи. Создадим подобный класс:

    Во-вторых, нам понадобится так называемый контекст базы данных. Это специальный класс, который координирует работу Entity Framework между базой данных и доменной моделью нашего приложения.

    В описанном выше классе важно следующее:

    • наш класс наследуется от класса IdentityDbContext , тем самым мы добавляем в наше приложение функциональность технологии ASP.NET Identity (система аутентификации и авторизации пользователей).
    • свойство типа DbSet позволяет соотнести объекты в приложении с соответствующими записями в таблице базы данных. Все LINQ-запросы к этому свойству будут транслироваться в SQL-запросы.
    • в переопределенном методе OnModelCreating() мы добавляем одну новую статью. Таким образом, при создании базы данных в таблицу Articles сразу будет добавлена первая запись. Данный подход иногда очень удобен, когда требуется заполнить базу данных тестовыми данными.
    • Далее переключаемся в класс Startup.cs, в метод ConfigureServices(). В этом месте непосредственно указывается вся конфигурация для нашего приложения, например, переадресация, кэш, сессия, маршрутизация и т.д. Нас в данном примере интересует настройки для контекста базы данных.

      Читайте также:  Dune hd com rus

      В коде выше мы регистрируем наш контекст и через опции указываем, что он будет подключаться к базе данных на сервере 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(), чтобы была возможность использовать его в других классах.

      Далее создадим новый контроллер, который и будет служить для всех операций со статьями.

      Читайте также:  Как быстро выделить всю таблицу в excel

      Последнее что остается — это создать соответствующие представления. Далее представлена простейшая 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.

      Рекомендуем к прочтению

      Добавить комментарий

      Ваш адрес email не будет опубликован.