Я вижу несколько вещей, которые нуждаются в исправлении.
Оператор modelbuilder
следует изменить, как показано ниже
modelBuilder.Entity<Application>().Property(app => app.Version).ValueGeneratedOnAddOrUpdate().IsConcurrencyToken();
Имейте в виду, что не существует стратегии генерирования стоимости, котораяуказано в свойстве Version. Когда мы генерируем миграцию с этим состоянием, сгенерированный файл Migration.cs назначает defaultValue new Guid("00000000-0000-0000-0000-000000000000"));
внутри метода Up()
. Ниже приведен пример
![Contact Entity](https://i.stack.imgur.com/BDuYs.png)
![Migration without Required attribute and without any value generation strategy](https://i.stack.imgur.com/8Am6u.png)
С другой стороны, если вы хотите новыйGuid добавляется каждый раз, когда вы вставляете новую строку в таблицу, вы должны использовать вычисляемое поле. Ниже на двух изображениях показана структура свойства Version, украшенного атрибутами и сгенерированной миграцией. Кроме того, для обозначения вычислений необходимо добавить следующий код строки:
modelBuilder.Entity<Contact>().Property(t => t.Version).HasComputedColumnSql("NEWID()");
![Migration with Computed Field](https://i.stack.imgur.com/AEnIG.png)
![Updated Entity With Computed Field](https://i.stack.imgur.com/BOAUC.png)
С упомянутыми изменениями вы получите новый Guid
, успешно сгенерированный для каждой вставленной строки.