Настройка базы данных
REDB требует набор таблиц, последовательностей и функций в вашей базе данных. Выберите удобный способ создания схемы.
Шаблон проекта
Готовый проект с моделями, CRUD и древовидными запросами — запускается сразу.
dotnet new install redb.Templatesdotnet new redb -n MyApp --db postgrescd MyApp && dotnet runПараметры: --db postgres|mssql --pro true|false
База данных создаётся автоматически при первом запуске. Просто укажите строку подключения в Program.cs.
A Авто-создание из кода
Самый простой способ. Передайте ensureCreated: true в InitializeAsync, и REDB создаст все необходимые объекты, если они ещё не существуют.
var redb = services.GetRequiredService<IRedbService>();
// Creates schema if tables don't exist, then scans assemblies
await redb.InitializeAsync(ensureCreated: true);
// Or pass assemblies explicitly to register specific models
await redb.InitializeAsync(ensureCreated: true, typeof(Product).Assembly);Внутри вызывается EnsureDatabaseAsync(), который проверяет наличие таблицы _schemes и запускает полный скрипт инициализации, если её нет.
// Step 1: Create schema
await redb.EnsureDatabaseAsync();
// Step 2: Register models (assembly is optional — omit to scan all referenced assemblies)
await redb.InitializeAsync();
// or specify assemblies explicitly:
// await redb.InitializeAsync(typeof(Product).Assembly);B CLI-инструмент
Установите dotnet-инструмент redb.CLI и инициализируйте базу из терминала.
# Install once
dotnet tool install --global redb.CLI
# PostgreSQL
redb init -p postgres -c "Host=localhost;Database=mydb;Username=postgres;Password=pass" -v
# SQL Server
redb init -p mssql -c "Server=localhost;Database=mydb;User Id=sa;Password=pass;TrustServerCertificate=True" -vПодробнее см. Справочник CLI — полная документация по командам export и import.
C SQL-скрипт вручную
Экспортируйте полный скрипт инициализации, проверьте его и выполните своим любимым SQL-инструментом. Идеально для сред, где DBA должен одобрить все изменения схемы.
# Export to file
redb schema -p postgres -o redb_schema.sql
# Review
cat redb_schema.sql
# Apply with psql
psql -d mydb -f redb_schema.sqlredb schema -p postgres | psql -d mydb
redb schema -p mssql | sqlcmd -d mydbСкрипт также можно получить из кода:
var sql = redb.GetSchemaScript();
File.WriteAllText("redb_schema.sql", sql);D Docker / CI Pipeline
Запустите инициализацию схемы как шаг контейнера или задачу CI.
# Install CLI in build stage
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS tools
RUN dotnet tool install --global redb.CLI
ENV PATH="$PATH:/root/.dotnet/tools"
# Init before app starts
ENTRYPOINT ["sh", "-c", "redb init -p postgres -c \"$REDB_CONN\" && dotnet MyApp.dll"]# .github/workflows/deploy.yml
- name: Init REDB schema
run: |
dotnet tool install --global redb.CLI
redb init -p postgres -c "$REDB_CONNECTION" -vПримеры Docker Compose
Готовые compose-файлы для запуска базы данных с REDB.
version: '3.8'
services:
pgdb:
restart: always
image: postgres:18
container_name: pgdb
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: your_password
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:FROM mcr.microsoft.com/mssql/server:2025-latest
USER root
# Install FTS package
RUN apt-get update && \
apt-get install -y curl apt-transport-https gnupg && \
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-preview.list \
-o /etc/apt/sources.list.d/mssql-server.list && \
apt-get update && \
ACCEPT_EULA=Y apt-get install -y mssql-server-fts && \
apt-get clean && rm -rf /var/lib/apt/lists/*
USER mssqlversion: '3.8'
services:
msdb:
restart: always
build: . # uses the Dockerfile above
container_name: msdb
ports:
- "1433:1433"
environment:
- MSSQL_SA_PASSWORD=YourStr0ngPassword!
- ACCEPT_EULA=Y
volumes:
- mssql-data:/var/opt/mssql/data
- mssql-log:/var/opt/mssql/log
- mssql-secrets:/var/opt/mssql/secrets
healthcheck:
start_period: 1m
interval: 1m30s
timeout: 10s
retries: 3
volumes:
mssql-data:
mssql-log:
mssql-secrets:После запуска контейнера инициализируйте схему REDB:
# PostgreSQL
redb init -p postgres -c "Host=localhost;Database=mydb;Username=postgres;Password=your_password" -v
# SQL Server
redb init -p mssql -c "Server=localhost;Database=mydb;User Id=sa;Password=YourStr0ngPassword!;TrustServerCertificate=True" -vСравнение методов
| Метод | Когда | Ревью DBA | Автоматизация | Zero Config |
|---|---|---|---|---|
| A. Авто-создание | Разработка / Прототип | ✗ | ✓ | ✓ |
| B. CLI | Staging / Команда | ✗ | ✓ | ✗ |
| C. SQL-скрипт | Продакшен / Комплаенс | ✓ | ✗ | ✗ |
| D. Docker / CI | Контейнеры / Пайплайны | ✗ | ✓ | ✗ |