Обработка параллелизма EF с атрибутом Timestamp в подходе Model First

StackOverflow https://stackoverflow.com//questions/10682591

Вопрос

Я пытаюсь реализовать решение, данное в Обработка параллелизма с помощью Entity Framework в приложении ASP.NET MVC .

В статье говорится:

Добавление свойства отслеживания к сущности отдела

В Models\Department.cs добавьте свойство отслеживания:

[Timestamp] 
public Byte[] Timestamp { get; set; }

Атрибут Timestamp указывает, что этот столбец будет включен в предложение Where команд обновления и удаления, отправляемых в базу данных.

Поскольку я использую сначала модель подход, я выполнил шаги 1–5, описанные в Создание столбца Timestamp с помощью Entity Framework

  1. Добавьте свойство с именем «Timestamp» к объекту в модели EF.
  2. Установите тип двоичный
  3. Установить значение NULL равным false
  4. Установите для StoreGeneratedPattern значение Computed.
  5. Установите для ConcurrencyMode значение «Фиксированный».

Когда я обновляю свой код из модели базы данных, Models\Department.cs теперь содержит

    public virtual byte[] Timestamp
    {
        get;
        set;
    }

Затем я использовал класс метаданных, чтобы указать атрибут Timestamp:

// Metadata for Department entity
public class DepartmentMetadata
{
    [Timestamp]
    public byte Timestamp { get; set; }
}

Вопрос 1. Я проверил, является ли значение Timestamp столбец меняется при редактировании строк.Это не так.

РЕДАКТИРОВАТЬ 1 Проблема возникла из-за того, что тип столбца SQL Server был binary, где это должно было быть типа timestamp.Изменение типа данных устранило проблему, из-за которой столбец Timestamp не обновлялся.

В2. Я пытался изменить один и тот же объект (используя «Открыть в новой вкладке»), чтобы увидеть, есть ли OptimisticConcurrencyException брошен.Это не так.Что я делаю не так?Пожалуйста, помогите мне понять, спасибо.

Screenshot of my <code>Timestamp</code> property

Это было полезно?

Решение

Проблема возникла из-за того, что у меня был один ObjectContext для каждого сеанса HTTP, поэтому открытие новой вкладки и ее тестирование приводили к НЕТ вызвать исключение параллелизма.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top