#entity-framework-core
#сущность-структура-ядро
Вопрос:
Я хочу добавить атрибут ConcurrencyCheck к свойству сущности.
В старой Entity Framework вы делали это в файле edmx. Как вы делаете это в Core?
Я должен добавить, что я вижу, что это не рекомендуемый подход, однако я все равно хотел бы знать, как это сделать: https://docs.microsoft.com/en-us/aspnet/core/data/ef-rp/concurrency?view=aspnetcore-5.0amp;tabs=visual-studio
Комментарии:
1. Токены параллелизма — Настройка — Fluent API
2. «Старый» EF не использовал файл edmx, поскольку EF 4 сначала представил код. С тех пор способ добавления проверки параллелизма не изменился. Рекомендуемый способ — добавить
rowversion
столбец в таблицу, добавить соответствующее свойство к вашей сущности и добавить кTimestamp
нему атрибут. Или вы можете использовать Fluent API для добавления столбца и указать, что он используется для проверки параллелизма с.IsRowVersion()
3. Здесь я упускаю что-то очевидное. При обновлении базы данных, а затем выполнении команды scaffold перезаписываются как сущности, так и дочерний класс DbContext, что удаляет как атрибуты, так и изменения в методе OnModelCreating
4. Если вы не можете этого сделать, менее эффективный способ — указать столбцы / свойства для проверки изменений с
ConcurrencyCheck
помощью атрибута. Это дороже, потому что оно должно извлекать и проверять несколько атрибутов.5. @tony ты не спрашивал о строительных лесах. Вы спрашивали о проверках параллелизма. Строительные леса
rowversion
уже понимают. Вы можете управлять тем, что генерируется с помощью строительных лесов, атрибутов или плавных вызовов. Сгенерированные классы являются частичными, что означает, что вы можете добавлять дополнительные методы в другой файл, который не генерируется автоматически