Titanic.Db
1.1.2
dotnet add package Titanic.Db --version 1.1.2
NuGet\Install-Package Titanic.Db -Version 1.1.2
<PackageReference Include="Titanic.Db" Version="1.1.2" />
<PackageVersion Include="Titanic.Db" Version="1.1.2" />
<PackageReference Include="Titanic.Db" />
paket add Titanic.Db --version 1.1.2
#r "nuget: Titanic.Db, 1.1.2"
#:package Titanic.Db@1.1.2
#addin nuget:?package=Titanic.Db&version=1.1.2
#tool nuget:?package=Titanic.Db&version=1.1.2
Titanic.Db
Роль в архитектуре
Titanic.Db — SQL builder и слой выполнения запросов для решения Titanic.
Он находится между общей инфраструктурой из Titanic.Common и ORM-слоем Titanic.Entity:
Titanic.Common -> Titanic.Db -> Titanic.Entity
Пакет отвечает за низкоуровневую работу с данными и может использоваться как самостоятельно, так и как основа для Entity ORM.
Когда использовать
Используйте Titanic.Db, если нужно:
- строить SQL типизированно, без ручной сборки строк;
- управлять
SELECT,INSERT,UPDATE,DELETEи DDL на уровне fluent API; - контролировать
JOIN, фильтры, группировки, сортировки и paging; - подключать конкретный провайдер БД и SQL engine;
- использовать слой доступа к данным отдельно от Entity ORM.
Если вам уже нужны сущности, metadata и HTTP API, следующим слоем будет Titanic.Entity.
Основные возможности
- fluent builders для
SELECT,INSERT,UPDATE,DELETE; - expression model и SQL AST;
- SQL-функции,
CASE, агрегаты, подзапросы; JOIN,GROUP BY,HAVING,ORDER BY, paging;- DDL helper
Table; - провайдеры БД и SQL renderer;
- PostgreSQL-реализация из коробки.
Ключевые типы
Управление провайдерами и доступом к БД
DbManager— реестр провайдеров и database wrappers.Database/BaseDatabase— высокоуровневая обёртка для создания запросов и выполнения операций.BaseDbProvider— базовый провайдер БД.PostgresProvider— PostgreSQL-провайдер.BaseDbEngine— базовый SQL renderer.PostgresEngine— renderer для PostgreSQL.
Построение запросов
Select— builderSELECT.InsertSelect— builderINSERTиINSERT FROM SELECT.Update— builderUPDATE.Delete— builderDELETE.Table— DDL helper для таблиц, колонок и индексов.
Вспомогательные API
Column— фабрика колонок, параметров, констант и подзапросов.Func— фабрика SQL-функций.QueryExpression— выражения условий и операторов.QueryBuildResult— результатBuild()с SQL и параметрами.QueryParameter— модель SQL-параметра.DbReader/IDbReader— выполнение запросов и чтение данных.
Fluent builders условий
WhereItem<TQuery>— условияIsEqual,IsGreaterThan,IsLike,IsNull,Between,In.WhereBuilder<TParent>— группировка условий черезAndOpen,OrOpen,Close,End.JoinItem— построениеJOIN ... ON ....PagingItem—Limit,Take,Skip,Page.HavingExpression— fluentHAVING.CaseItem,CaseWhenItem,CaseThenItem— fluentCASE.
Пример использования
var rows = provider.Select()
.Column("e", "id")
.Column("e", "name")
.From("employees").As("e")
.Where("e", "is_active").IsEqual(Column.Parameter(true))
.OrderBy("e", "name")
.ExecuteReader(r => new
{
Id = r.Get<int>("id"),
Name = r.Get<string>("name")
});
Пример DDL через Table:
var db = DbManager.GetProvider();
db.Table("departments").CreateIfNotExists(
new Table.ColumnDefinition("id", Table.ColumnType.Serial, primaryKey: true),
new Table.ColumnDefinition("name", Table.ColumnType.Text, notNull: true),
new Table.ColumnDefinition("description", Table.ColumnType.Text));
Что пакет не делает
Titanic.Db не является Entity Framework Core и не содержит:
DbContext;- EF Core migrations;
- repository layer по умолчанию;
- Entity ORM-модель.
Если нужен ORM-слой, он находится в Titanic.Entity.
Зависимости
Основная project dependency:
Titanic.Common
Технологические зависимости:
Npgsql— PostgreSQL provider;Microsoft.Extensions.*— конфигурация, DI и options;Microsoft.AspNetCore.App— web extension-методы.
Как читать дальше
После знакомства с Titanic.Db обычно переходят к одному из двух направлений:
- к прикладному коду, который использует SQL builder напрямую;
- к Titanic.Entity/README.md, если поверх SQL нужен ORM и HTTP API.
Связанные документы
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Microsoft.Extensions.Configuration.Binder (>= 9.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.5)
- Npgsql (>= 10.0.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Titanic.Db:
| Package | Downloads |
|---|---|
|
Titanic.Entity
Entity ORM and HTTP API layer for Titanic. |
GitHub repositories
This package is not used by any popular GitHub repositories.