IsConcurrencyToken в свободном API не влияет на леса миграции

1

Это выглядит очень просто и немой, но по какой-то причине это не работает... Я получил эту строку в DbContext OnModelCreating:

modelBuilder.Entity<Client>().Property(o => o.RowVersion).IsConcurrencyToken();

И я получил эту строку в объекте Client:

public byte[] RowVersion { get; set; }

И миграция лесов заканчивается следующим образом:

AddColumn("dbo.Client", "RowVersion", c => c.Binary());

Если я добавлю атрибут [Timestamp] в свойство, то он работает и дает мне:

AlterColumn("dbo.Client", "RowVersion", c => c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"));

Здесь что-то не хватает? Я действительно смущен... В учебнике больше ничего не нужно делать.

-Редактировать-

Добавление .IsRowVersion() с использованием свободного API заставило его работать. Является ли учебное пособие Microsoft просто неправильным или является нарушением изменений без версий EF6? (Я на 6.1.1, я считаю)

Теги:
entity-framework

2 ответа

1
Лучший ответ

Добавление.IsRowVersion() с использованием свободного API заставило его работать.

Является ли учебное пособие Microsoft просто неправильным или является нарушением изменений без версий EF6? (Я на 6.1.1, я считаю) Если кто-то может ответить на этот вопрос, я с радостью изменю принятый ответ вам более подробный ответ.

1

IsConcurrencyToken не работает для байт []

тип данных - nvarchar (max), его значение всегда равно null, если вы не инициализируете его, его значение не будет автоматически увеличиваться при обновлении записи.

IsRowVersion, с другой стороны, имеет datatype rowversion, поэтому его значение никогда не является нулевым, и его значение всегда автоматически увеличивается при обновлении записи. и он автоматически настраивает свойство как оптимистичный токен параллелизма.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню