Использовали ли вы подход Code First в Entity Framework?

«Использовали ли вы подход Code First в Entity Framework?» — вопрос из категории Entity Framework, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, использовал. Code First — это подход к работе с данными, при котором разработка начинается с написания классов сущностей (доменной модели) на C#, а схема базы данных генерируется из этого кода.

Типичный рабочий процесс:

  1. Определение классов-сущностей и контекста данных (DbContext).
  2. Создание миграции на основе модели (Add-Migration InitialCreate).
  3. Применение миграции для создания или обновления БД (Update-Database).

Пример базовой настройки:

// 1. Класс-сущность
public class Blog
{
    public int Id { get; set; } // По соглашению станет первичным ключом
    public string Url { get; set; } = string.Empty;
    public int Rating { get; set; }
    public List<Post> Posts { get; set; } = new(); // Навигационное свойство
}

// 2. Контекст данных
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlServer(@"Server=(localdb)mssqllocaldb;Database=BloggingDB;Trusted_Connection=True;");
}

Преимущества подхода:

  • Контроль над кодом: Модель данных — это чистый C# код, который легко версионировать и рефакторить.
  • Миграции: Позволяют инкрементально и контролируемо изменять схему БД, синхронизируя её с изменяющейся моделью.
  • Быстрое прототипирование: Не требуется предварительное проектирование БД.

Для сложных сценариев используется Fluent API в методе OnModelCreating для тонкой настройки отношений, индексов, имен таблиц/столбцов и правил каскадного удаления, которые сложно или невозможно выразить через атрибуты.