Столбец метки времени Linq to sql всегда возвращается - PullRequest
0 голосов
/ 17 октября 2011

У меня есть DBML с классом, который содержит столбец отметки времени в sql.

Свойство в DBML объявлено как: (только соответствующие поля указаны здесь)

Автоматически сгенерированное значение: true Имя: отметка времени Nullable: ложь Тип данных сервера: rowversion NOT NULL Источник: метка времени Отметка времени: правда Тип: двоичный Проверка обновления: никогда

По своей логике я вставляю в эту таблицу. Тем не менее, я удивлен, увидев, что сгенерированный sql выглядит примерно так:

exec sp_executesql N'INSERT INTO [dbo].Foo( /* elided */)
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21, @p22, @p23, @p24, @p25)

SELECT [t0].[Timestamp]
FROM [dbo].[Foo] AS [t0]
WHERE [t0].[Id] = @p26', /* elided */

Я бы хотел избавиться от этого оператора SELECT - я не использую результат.

Возможно ли это, или необходимо, чтобы для отслеживания объекта текст данных должен знать, какая временная метка была для этой новой записи?

Я понимаю, что мог бы перейти на использование SP для метода вставки, но предпочел бы избежать этого.

1 Ответ

1 голос
/ 17 октября 2011

Дополнительный выбор требуется, чтобы обновить временную метку, которую использует локальный экземпляр объекта при обновлении себя в проверке параллелизма для любых последующих предложений обновления / удаления.Поскольку значение RowVersion (TimeStamp) обновляется при каждом изменении / вставке строки, клиенту требуется новая версия, в противном случае последующее обновление не будет выполнено, поскольку значение временной метки больше не будет прежним.

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