← Все вопросы

Что такое Entity Framework и зачем он нужен?

Задан 2 месяца назад830 просмотров2 ответа
9

Слышу про Entity Framework, EF Core, ещё какой-то EF6. Что это вообще и почему говорят, что с ним не нужно писать SQL? В чём разница между версиями?

2 ответа

16
✓ Принятый ответ — помог автору

Entity Framework (EF) — это ORM (Object-Relational Mapper) от Microsoft. Он связывает таблицы БД с классами C#, чтобы вы работали с данными как с обычными объектами, а SQL генерировался за вас.

Идея на примере. Описываете класс-сущность и контекст:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
}

И дальше пишете запросы на LINQ, а не на SQL:

using var db = new AppDbContext();

var adults = db.Users
    .Where(u => u.Age >= 18)
    .OrderBy(u => u.Name)
    .ToList();

db.Users.Add(new User { Name = "Аня", Age = 25 });
db.SaveChanges();

EF сам переведёт это в SELECT ... WHERE Age >= 18 и INSERT.

Про версии:

  • EF6 — старая, классическая версия, работает только на .NET Framework (Windows). Её ещё поддерживают для легаси-проектов, но в новых не используют.
  • EF Core — современная кроссплатформенная переписанная версия для .NET Core / .NET 5+. Именно её берут в новых проектах.

Зачем нужен: меньше рутинного кода, типобезопасные запросы, миграции (версионирование схемы БД из кода). Минус — на сложных запросах сгенерированный SQL бывает неоптимальным, и тогда полезно понимать, что под капотом всё равно ADO.NET.

7

Коротко про выбор: если у вас новый проект на .NET 6/7/8 — однозначно EF Core. EF6 трогайте только если поддерживаете старое приложение на .NET Framework. И да, EF не отменяет знание SQL — наоборот, на проде вам почти наверняка придётся смотреть, какие запросы он реально шлёт в базу (через логирование), чтобы ловить N+1 и лишние выборки.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект