Я пытаюсь реализовать решение, данное в Обработка параллелизма с помощью Entity Framework в приложении ASP.NET MVC .
В статье говорится:
Добавление свойства отслеживания в сущность отдела
В Models\Department.cs добавьте свойство отслеживания:
[Отметка времени] общедоступный байт [] временная метка { получить; задавать; }
Атрибут Timestamp указывает, что этот столбец будет включен в предложение Where команд Update и Delete, отправляемых в базу данных.
Поскольку я использую подход model first, я следовал шагам 1–5, описанным в Создание столбца Timestamp с помощью Entity Framework
Когда я обновляю свой код из модели базы данных, файл 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
. Это не так. Что я делаю неправильно? Пожалуйста, помогите мне понять, спасибо.