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

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

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

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

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

[Отметка времени]
общедоступный байт [] временная метка { получить; задавать; }

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

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

  1. Добавление свойства с именем Timestamp к объекту в модели EF
  2. Задайте двоичный тип для типа
  3. Задайте значение nullable для false
  4. Задайте для StoreGeneratedPattern значение Computed
  5. Задайте для ConcurrencyMode значение Fixed

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

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

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

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

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

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

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

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

5
задан escist 23 May 2012 в 08:38
поделиться