Найти в Дзене

Что такое ORM в базах данных

ORM используется как сокращение для описания действий с базой данных. ORM (Object-Relational Mapping) — это «переводчик» между миром объектов в коде (C#) и миром таблиц в базе данных (SQL). Если без ORM вы пишете запросы руками, то с ORM вы просто работаете со списками и объектами, а библиотека сама генерирует нужный SQL-код «под капотом». Как это меняет работу: Без ORM (Классический SQL) Вы должны сами знать синтаксис SQL, следить за типами данных и вручную мапить строки из БД в свойства класса. // Нужно писать строку запроса вручную
var sql = "INSERT INTO Users (Name, Age) VALUES ('Ivan', 25)";
// И выполнять её через специальные команды
connection.Execute(sql); С использованием ORM (например, sqlite-net-pcl) Вы описываете таблицу как обычный класс, а действия совершаете через методы. // Описываем модель
public class User {
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
}
// Просто сохраняем объект
var newUser = new User { Name =

ORM используется как сокращение для описания действий с базой данных. ORM (Object-Relational Mapping) — это «переводчик» между миром объектов в коде (C#) и миром таблиц в базе данных (SQL). Если без ORM вы пишете запросы руками, то с ORM вы просто работаете со списками и объектами, а библиотека сама генерирует нужный SQL-код «под капотом». Как это меняет работу:

Без ORM (Классический SQL)

Вы должны сами знать синтаксис SQL, следить за типами данных и вручную мапить строки из БД в свойства класса.

// Нужно писать строку запроса вручную
var sql = "INSERT INTO Users (Name, Age) VALUES ('Ivan', 25)";
// И выполнять её через специальные команды
connection.Execute(sql);

С использованием ORM (например, sqlite-net-pcl)

Вы описываете таблицу как обычный класс, а действия совершаете через методы.

// Описываем модель
public class User {
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
}

// Просто сохраняем объект
var newUser = new User { Name = "Ivan" };
await db.InsertAsync(newUser); // ORM сама создаст SQL-запрос

Главные преимущества:

  • Безопасность: ORM автоматически защищает от SQL-инъекций.
  • Скорость разработки: Не нужно писать сотни строк однотипного SQL-кода.
  • Строгая типизация: Ошибки в названиях полей вы увидите еще при написании кода (Intellisense подскажет), а не во время работы программы.
  • Миграции: ORM помогают легче изменять структуру таблиц при обновлении приложения.

В чем подвох?

За удобство вы платите небольшой потерей производительности (тратится время на генерацию SQL) и чуть меньшим контролем над сложными запросами.

Источник статьи