Titanic.Db 1.1.2

dotnet add package Titanic.Db --version 1.1.2
                    
NuGet\Install-Package Titanic.Db -Version 1.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Titanic.Db" Version="1.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Titanic.Db" Version="1.1.2" />
                    
Directory.Packages.props
<PackageReference Include="Titanic.Db" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Titanic.Db --version 1.1.2
                    
#r "nuget: Titanic.Db, 1.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Titanic.Db@1.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Titanic.Db&version=1.1.2
                    
Install as a Cake Addin
#tool nuget:?package=Titanic.Db&version=1.1.2
                    
Install as a Cake Tool

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 — builder SELECT.
  • InsertSelect — builder INSERT и INSERT FROM SELECT.
  • Update — builder UPDATE.
  • Delete — builder DELETE.
  • 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 ....
  • PagingItemLimit, Take, Skip, Page.
  • HavingExpression — fluent HAVING.
  • CaseItem, CaseWhenItem, CaseThenItem — fluent CASE.

Пример использования

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.

Version Downloads Last Updated
1.1.2 110 6/7/2026
1.1.0 106 6/7/2026