Entity Framework 6 <-> SQL Server 2016 <-> Поле DateTime для ConcurrencyCheck - PullRequest
0 голосов
/ 08 мая 2018

В моем приложении я использую Entity Framework с подходом, основанным на коде, и в каждой таблице у меня есть свойство LastModificationTime для проверки DbConcurrency.

Этот столбец в моей базе данных имеет тип DateTime (это обязательно, и я не могу использовать DateTime2).

Я использую FluentApi, и объявление для каждого объекта выглядит так:

    this.Property(e => e.LastModificationTime).HasColumnName("MODIFQUAND").HasColumnType("datetime").IsConcurrencyToken();

В SQL Server 2012 обновление на моем объекте работало, но мне пришлось перенести базу данных на SQL Server 2016, и теперь обновление больше не работает из-за этого столбца.

Запрос на обновление моей сущности:

UPDATE [dbo].[ADRRESS]
SET [BO_ID] = NULL, [DN_CONCAT] = @0, [MODIFQUAND] = @1, [MODIFQUI] = @2
WHERE (([ADR_ID] = @3) AND ([MODIFQUAND] = @4))

-- @0: '  ' (Type = AnsiString, Size = -1)
-- @1: '08/05/2018 10:55:03' (Type = DateTime2)
-- @2: '5263' (Type = Int32)
-- @3: '4333555' (Type = Int32
-- @4: '15/12/2017 10:04:27' (Type = DateTime2)

Я получаю это исключение:

System.Data.Entity.Infrastructure.DbUpdateConcurrencyException 'в EntityFramework.dll Сущность не найдена из-за точности DateTime.

Я не понимаю, какие изменения в SQL Server 2016 связаны с моей проблемой. Я обнаружил похожую проблему, но без ответа или одного ответа следует изменить тип столбца и использовать datetime2, но я не могу.

Спасибо за вашу помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...