Как использовать Entity Framework Core с MongoDB: подробное руководство по созданию C#-приложения

freeCodeCamp.org 42,4 тыс. 1 ч 1 мин 4 мин 29.07.2024
Главное

В современном мире разработки выбор между гибкостью NoSQL и удобством объектно-реляционного маппинга (ORM) часто становился дилеммой. Однако новый провайдер MongoDB для Entity Framework Core призван стереть эти границы, позволяя .NET-разработчикам использовать привычные паттерны Microsoft для работы с документоориентированными данными.

🍃 Знакомство с экосистемой: MongoDB и EF Core 0:00

На старте курса Бо Карн (Bo Carnes), инструктор freeCodeCamp.org, дает определение ключевым технологиям стека . По его словам, MongoDB — это популярная NoSQL-база данных, предназначенная для обработки больших объемов данных с высокой производительностью и масштабируемостью . В отличие от традиционных реляционных баз, MongoDB хранит данные в гибких JSON-подобных документах, что позволяет естественным образом описывать сложные структуры .

Основные характеристики MongoDB:

Вторым элементом стека выступает Entity Framework Core (EF Core). Как утверждает Бо Карн, это современный объектно-базовый маппер для .NET, который позволяет разработчикам работать с базой данных через объекты .NET, избавляя от необходимости писать громоздкий код доступа к данным . EF Core поддерживает SQL Server, SQLite, а теперь и MongoDB .

🛠️ Как работает провайдер MongoDB для EF Core 7:31

Провайдер выступает «мостом», который позволяет использовать знакомый API и паттерны проектирования EF Core при работе с MongoDB . По мнению Бо Карна, это значительно снижает порог вхождения для разработчиков, уже знакомых с экосистемой Microsoft .

Ключевые возможности провайдера:

  1. Workflows «Code-First»: Модели данных определяются в C#, а EF Core генерирует схему MongoDB .
  2. Поддержка LINQ: Запросы к базе пишутся на языке C# без использования специфического синтаксиса MongoDB .
  3. Отслеживание изменений (Change Tracking): EF Core автоматически обнаруживает измененные поля объектов и обновляет только их при сохранении .
  4. Вложенные документы: Поддерживается хранение связанных данных внутри одного документа, что является стандартом для NoSQL .

🏗️ Практика: Создание системы бронирования ресторанов 14:44

В качестве демонстрационного проекта Бо Карн предлагает создать систему резервирования столиков, используя облачную базу данных MongoDB Atlas .

Настройка базы данных и среды

Для начала работы необходимо создать бесплатный кластер в MongoDB Atlas и загрузить демонстрационный набор данных (Sample Data) . Бо Карн использует набор sample_restaurants, содержащий тысячи записей о заведениях .

В качестве среды разработки выступает Visual Studio Code с установленным расширением C# Dev Kit . Проект создается на базе шаблона ASP.NET Core MVC . Единственный необходимый NuGet-пакет — MongoDB.EntityFrameworkCore, который автоматически подтягивает зависимости драйвера MongoDB и самого ядра EF Core .

Определение моделей и контекста данных

Для проекта создаются три ключевые модели:

Сердцем интеграции становится класс RestaurantReservationDbContext, наследуемый от DbContext . В нем определяются свойства DbSet<Restaurant> и DbSet<Reservation>, которые EF Core преобразует в операции с коллекциями. Бо Карн подчеркивает: в методе OnModelCreating не нужно вызывать ToTable, так как соответствие коллекциям задается атрибутами в моделях .

🔄 Реализация CRUD-операций через репозитории 33:08

Хотя с контекстом данных можно работать напрямую, автор видео рекомендует использовать паттерн «Репозиторий» (Repository Pattern) через сервисы .

🧪 Запуск и продвинутые возможности Atlas 53:15

В процессе запуска приложения Бо Карн демонстрирует типичную ошибку: неправильное имя базы данных в appsettings.json может привести к пустому списку (база restaurants вместо sample_restaurants) . После исправления конфига приложение успешно выводит данные из облака.

В завершение Бо Карн касается тем, выходящих за рамки стандартного EF Core:

  1. Atlas Search: Полнотекстовый поиск с поддержкой автодополнения и ранжирования по релевантности .
  2. Vector Search: Поиск по сходству векторов, необходимый для систем рекомендаций и приложений с использованием машинного обучения .

Инструктор отмечает, что хотя EF Core упрощает стандартные операции (CRUD), для таких мощных функций, как векторный поиск, по-прежнему требуется прямое использование драйвера MongoDB.Driver совместно с EF Core . Такой гибридный подход позволяет получить лучшее от обоих миров: структурированный доступ к данным и мощь облачных поисковых движков.

💬 Цитаты

«Этот документ-ориентированный подход позволяет хранить сложные структуры данных более естественным и интуитивно понятным способом.»

«Провайдер MongoDB EF Core позволяет использовать те же методологии Code First и LINQ, которые вы использовали бы с реляционными базами.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
BSON
Бинарный формат хранения документов в MongoDB, расширяющий возможности JSON.
LINQ
Язык запросов к данным в .NET, позволяющий писать запросы на C# без использования SQL/MQL.
ORM
Технология программирования, которая связывает базы данных с объектно-ориентированными языками программирования.
📊 Цифры
🗓 Хронология
  1. 14:44 Начало практической части: создание облачного кластера MongoDB Atlas.
  2. 21:37 Установка необходимых пакетов через менеджер NuGet.
  3. 53:30 Первый запуск приложения и отладка подключения к базе данных.
⚖️ Другая сторона
Технологии и IT MongoDB EF Core Entity Framework C# NoSQL