Вставить запись в таблицу данных со столбцом с типом данных timestamp - C # / SQL 2008

Мы переместили наше приложение с использования EntityFramework 4.2 и пары других коммерческих ORM-продуктов на ADO.NET по соображениям производительности, и это действительно подтверждает цель.

но мы столкнулись с проблемой, связанной с отметкой времени типа данных.

в EF мы помещаем столбец с типом данных timestamp в каждую нашу таблицу и разрешаем EF использовать этот столбец для управления версиями,

теперь мы используем ADO.Net с набором данных / datatable, я не уверен, как инициализировать новое значение для столбца timestamp для каждой новой строки, добавляемой в datatable. вот одна из ошибок. Столбец "RECVERSION" должен быть уникальным. Значение 'System.Byte []' уже присутствует. мы могли бы отключить ограничение, но мы хотели бы иметь это ограничение для версии строки. Вопрос: Как мы можем получить какую-то автоматическую инициализацию нового значения для временной метки в отключенной среде набора данных / таблицы данных? Спасибо


person user1092875    schedule 12.12.2011    source источник


Ответы (1)


Столбец типа TIMESTAMP (или ROWVERSION в SQL Server 2008) всегда будет автоматически обрабатываться SQL Server.

И не может и не должен вставлять в него какие-либо значения. Просто оставь это в покое! Вы должны просто выбрать его, чтобы определить, когда строка была изменена между моментом, когда вы ее читаете, и моментом, когда вы пытаетесь ее обновить.

Не пытайтесь вставить или установить это значение! Просто исключите его из любого из ваших операторов SQL INSERT или UPDATE. SQL Server сделает всю работу за вас.

person marc_s    schedule 12.12.2011