LayoutTopdownPanoramaFrameEntity
Назначение
Хранение информации о кадре из видео с видом сверху над планировкой. Один кадр — один ImageFileId и коллекция точек (Points) в виде owned type или JSONB с привязкой к точкам планировки и позиции на кадре.
Структура таблицы
| Поле | Тип | Обязательность | Ограничения | Описание |
|---|---|---|---|---|
| Id | Guid | Обязательное | PK | Идентификатор кадра |
| CreatedAt | DateTimeOffset | Обязательное | Дата создания | |
| TenantId | Guid | Обязательное | FK | Идентификатор тенанта |
| ChessboardPropertyLayoutId | long | Обязательное | FK | Идентификатор планировки |
| LayoutTopdownPanoramaId | Guid | Обязательное | FK | Идентификатор записи вида сверху (LayoutTopdownPanoramaEntity) |
| ImageFileId | Guid | Обязательное | Идентификатор файла с кадром из 360 видео | |
| Points | JSONB или коллекция Owned | Обязательное | Коллекция точек кадра (см. LayoutTopdownPanoramaFramePoint) |
Primary Key
(Id).
Ограничения
- FK на ChessboardProjectPropertyLayoutEntity по (TenantId, ChessboardPropertyLayoutId).
- FK на LayoutTopdownPanoramaEntity по (TenantId, LayoutTopdownPanoramaId).
Связи между сущностями
Используемые типы
- LayoutTopdownPanoramaFramePoint — элемент коллекции Points: PointId (связь с точкой на планировке), Position (Npgsql Point). В БД хранится как JSONB коллекция или owned collection по соглашению EF.
Постановка задачи
Добавить в DbContext сущность LayoutTopdownPanoramaFrameEntity. Points — либо JSONB с сериализацией коллекции LayoutTopdownPanoramaFramePoint, либо owned collection (в зависимости от выбора реализации в EF). Создать миграцию и репозиторий.