SQL Server RowVersion

Быстрое Ре вопроса: Реализация RowVersion.

Я надеюсь включать его в свою следующую базу данных (Разрабатывающий его теперь), и я обдумываю 2 различных пути:

  1. Строка RowVersion во всех таблицах
  2. Отдельная таблица RowVersion, которая имеет идентификатор таблицы как внешний ключ и связанный с ним.

Кто-либо попробовал это? Раз так, какие ловушки или pro's Вы испытывали?

Я буду использовать LINQ для доступа к данным с помощью C# 2008 и SQL Server 2008.

Спасибо,

James

6
задан marc_s 8 January 2010 в 06:07
поделиться

3 ответа

Если вы используете LINQ в SQL, то хорошая практика включает в себя столбец Timestamp / RowVersion для каждой таблицы сущности, так как это позволяет очень легко использовать оптимистическое значение SINQU. Производительность для обновлений (так как LINQ должна запросить столбец Timestamp и не нужно сравнивать другие столбцы для изменений).

Так что идите на первый вариант. Второй вариант - не стартер, правда.

11
ответ дан 8 December 2019 в 17:21
поделиться

Добавьте вашу версию строки в основную таблицу - размещение его во второй таблице и связывание с ним снизит производительность.

Как сказал Сэм выше, LINQ выигрывает от наличия в таблице версий строк, но я не думаю, что он будет работать со связанной таблицей.

2
ответ дан 8 December 2019 в 17:21
поделиться

Предположим, что под RowVersion вы подразумеваете тип данных с метками времени (bad name).

Используйте столбец Rowversion во всех таблицах.

SQLServer автоматически обновляет столбец.

Я никогда не использовал LINQ для SQL (как мой SQL raw), но столбец Rowversion очень полезен при обновлении (concurrency).

Просто используйте "Где ID=@ID AND ROWVERSION=@RV" для обработки параллельных обновлений.

Не используйте второй вариант!

1
ответ дан 8 December 2019 в 17:21
поделиться