|
Модератор
|
|||||||||||
Задать "CURRENT_TIMESTAMP" в EF Code-First SQLite атрибутами в свойстве24.01.2022, 13:13. Показов 2251. Ответов 20
Метки нет (Все метки)
Не могу как добавить значение по умолчание "CURRENT_TIMESTAMP" к полю при создании БД в Code First EF.
Нужно получить такое поле: "TimeStamp" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,Добавить "руками" получается без проблем. Можно создать и в OnModelCreating:
Возможно ли это и, если да, то как? Проект Core 6 с использование NuGet пакета Microsoft.EntityFrameworkCore.Sqlite. Мои неудачные попытки:
Забыл написать атрибут [SqlDefaultValue] SQLite.CodeFirst.SqlDefaultValueAttribute из пакета msallin:SQLite.CodeFirst.
0
|
|||||||||||
| 24.01.2022, 13:13 | |
|
Ответы с готовыми решениями:
20
VS Code перестраивает строку с атрибутами тега input в столбик Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др. Ошибка ToastNotifier, System.InvalidOperationException: "Невозможно задать в свойстве Owner объект Window, |
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
|
| 24.01.2022, 14:27 | |
|
Элд Хасп, попробуйте создать таблицу в БД и посмотреть, какой EF создаст для нее класс.
1
|
|
|
|
||||||
| 24.01.2022, 14:35 | ||||||
|
Ну вроде бы
Если не будет работать, то вот тут вариант реализации или объяснения. EF 7 set initial default value for DateTime column
1
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 24.01.2022, 17:58 | ||
|
или 2. Строю базу в EF+миграции за месяц, потом пишу клиент за неделю Как-то так
0
|
||
|
Модератор
|
||||
| 24.01.2022, 21:38 [ТС] | ||||
|
В коде выше показал этот вариант. Как решить - без атрибутов я знаю. Выше дал рабочий вариант. Добавлено через 10 минут Выдаёт, что версия FW не содержит нужной информации. Делаю как по ссылке: https://docs.microsoft.com/ru-... amework-cs
0
|
||||
|
|
|||||||
| 24.01.2022, 23:07 | |||||||
|
По пакетному может не работать, если не инициализировать в конвенции этот атрибут и всю логику.
![]() И, если я не ошибаюсь, то после создания миграции, в файле, у изменённой модели, должна появиться команда по заполнению дефолтного значения. Мы раньше поэтому не парились, обходили весь этот сложный путь и просто в миграции прописывали значение, руками.
1
|
|||||||
|
Модератор
|
||||
| 24.01.2022, 23:17 [ТС] | ||||
|
Из какого пространранства? Добавлено через 1 минуту Добавлено через 3 минуты
0
|
||||
|
|
||
| 25.01.2022, 08:59 | ||
|
Но какой смысл в этом атрибуте? Как вы представляете себе его функциональную часть? Это же аналог свойства колонки в БД, а не препроцессор значений. Как он должен выполнить предзаполенение пустого значение при запросе вставки, обновления и т.п.? Он же не будет проверять "если свойство NULL, то сначала выполню в БД команду из атрибута, получу значение и вставлю через рефлекию в значение". Разве нет?
0
|
||
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
|
|
| 25.01.2022, 09:04 | |
|
HF, так оно только для миграций и может быть нужно. Хотя нужны ли сами миграции - вопрос.
0
|
|
|
Модератор
|
|||
| 25.01.2022, 11:15 [ТС] | |||
|
Задачи изменения БД не возникает. Добавлено через 1 минуту В созданной БД это поле должно быть "TimeStamp" TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP.Больше ничего не надо. Добавлено через 44 секунды Но причём здесь миграции? Добавлено через 47 секунд Миграция - это получение из БД с одной схемой БД с другой схемой. Мне это не нужно.
0
|
|||
|
|
||
| 25.01.2022, 11:32 | ||
|
Проще создать БД и устанавливать её с приложением, БД SQLite это ведь просто файл.
0
|
||
|
Модератор
|
|||
| 25.01.2022, 13:03 [ТС] | |||
|
Можно и образ начальной БД заливать, можно в OnModelCreating задать, как я показал в топе. Меня интересует можно ли это сделать установкой атрибута. Создание TimeeStamp это же очень частая задача и не ужели для этого нет атрибута? Сама БД без проблем поддерживает CURRENT_TIMESTAMP. То есть я не понимаю почему не работают атрибуты [Timestamp], [SqlDefaultValue] , [DefaultValue].Мне кажется, что я что-то не так делаю, вот что именно ЧТО НЕ ТАК я делаю я и хочу выяснить. [System.ComponentModel.DefaultValue("CURRENT_TIMESTAMP")] тоже не задаёт.
0
|
|||
|
|
|||
| 25.01.2022, 13:12 | |||
|
Именно что миграция в каком то виде и должна отработать. Теперь осталось понять почему оно не подхватывает этот атрибут. Тут я пока пас. ![]() Добавлено через 57 секунд )
1
|
|||
|
|
||||||
| 25.01.2022, 13:58 | ||||||
|
Элд Хасп, а если так попробовать?
If you are using EF, adorn the property with Data Annotation [Timestamp], then go to the overrided OnModelCreating, inside your context class, and add this Fluent API code:
How to have an automatic timestamp in SQLite?
0
|
||||||
|
|
|||
| 25.01.2022, 14:18 | |||
|
Добавлено через 1 минуту
1
|
|||
|
|
|
| 25.01.2022, 14:21 | |
|
0
|
|
|
|
|||||||
| 25.01.2022, 15:48 | |||||||
|
Если здесь не причина то что
- CodeFirst - SQLite , то помоему я нашёл причину. Generated Values https://docs.microsoft.com/en-... nnotations 1) ради прикола попробовать атрибут DatabaseGenerated
https://docs.microsoft.com/en-... generation и кроме FluentAPI нет вариантов. И комментарий.
Если бы проверить на значении "42", то можно было бы и убедиться.
0
|
|||||||
|
Модератор
|
|||||||||||||
| 25.01.2022, 19:19 [ТС] | |||||||||||||
Не вышло:
Но по мне как-то это очень странно, а таком довольно старом и широко распространённом инструменте.
0
|
|||||||||||||
|
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
|
|
| 26.01.2022, 04:48 | |
|
Элд Хасп, на вашем месте, когда какая-то фича ну очень нужна, но она вроде как есть и не работает, я бы поступил следующим образом:
* полез бы в исходники в поисках тестов, где проверяется нужное мне поведение * полез бы на github в issues искать вопрос по этой теме или создал бы оный * полез бы в исходники искать реализацию нужного поведения (маловероятно) К первым двум пунктам я регулярно прибегал, когда знакомился с тем же linq2db. И это дало свои результаты. Может быстро выясниться, что не смотря на наличие нужных атрибутов, данное поведение для SQLite просто не реализовали.
1
|
|
| 26.01.2022, 04:48 | |
|
Помогаю со студенческими работами здесь
20
Как задать самоудаление батнику с атрибутами скрытый, системный и только для чтения? Моделирование SQLite EF Code First XamlParseException: "Binding" нельзя задать в свойстве Использование типов DataContract с другими атрибутами. Прокси класс не генерирует DataContract с атрибутами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|