Быстрое Ре вопроса: Реализация RowVersion.
Я надеюсь включать его в свою следующую базу данных (Разрабатывающий его теперь), и я обдумываю 2 различных пути:
Кто-либо попробовал это? Раз так, какие ловушки или pro's Вы испытывали?
Я буду использовать LINQ для доступа к данным с помощью C# 2008 и SQL Server 2008.
Спасибо,
James
Если вы используете LINQ в SQL, то хорошая практика включает в себя столбец Timestamp / RowVersion для каждой таблицы сущности, так как это позволяет очень легко использовать оптимистическое значение SINQU. Производительность для обновлений (так как LINQ должна запросить столбец Timestamp и не нужно сравнивать другие столбцы для изменений).
Так что идите на первый вариант. Второй вариант - не стартер, правда.
Добавьте вашу версию строки в основную таблицу - размещение его во второй таблице и связывание с ним снизит производительность.
Как сказал Сэм выше, LINQ выигрывает от наличия в таблице версий строк, но я не думаю, что он будет работать со связанной таблицей.
Предположим, что под RowVersion вы подразумеваете тип данных с метками времени (bad name).
Используйте столбец Rowversion во всех таблицах.
SQLServer автоматически обновляет столбец.
Я никогда не использовал LINQ для SQL (как мой SQL raw), но столбец Rowversion очень полезен при обновлении (concurrency).
Просто используйте "Где ID=@ID AND ROWVERSION=@RV" для обработки параллельных обновлений.
Не используйте второй вариант!