If you have a timestamp column, then to update the record (from the vanilla object): yes, I would expect you to have to assign it. Otherwise, you lose the ability to use a timestamp to optimize concurrency.
The idea is that you take a copy of the timestamp when you grab your (disabled) object, and then when updating you can use this column to make sure no one else has edited the line.
There are two common scenarios:
1: if you perform a short operation, first retrieve the record from the database - make changes to the object and just SumbitChanges () [all with the same data context]. The data context will handle concurrency for you.
2: if you disconnect the object (for example, passing it to the client application for a while), use something like serialization (LINQ-to-SQL objects support the DataContractSerializer (optional, you need to enable it)). Therefore, serialize the object on the server, pass it to the client - the client makes changes to its copy and passes it back. The server deserializes it and uses Attach () and SubmitChanges (). A record in memory should still have a timestamp that it had when retrieving from the database, so we can optimistically concurrency cover all the time when the record was disconnected.
source share