Как добавить ConcurrencyCheck к сущности, сгенерированной с помощью базы данных, сначала в Entity Framework Core

#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 уже понимают. Вы можете управлять тем, что генерируется с помощью строительных лесов, атрибутов или плавных вызовов. Сгенерированные классы являются частичными, что означает, что вы можете добавлять дополнительные методы в другой файл, который не генерируется автоматически