OK, so I'm using some code generation, building an assignment statement for every field, and I ran into a situation where my code updated my entity.RowVersion property, and no other property of my entity. I assigned it its original value, however, this marked the entity's IsDirty = True. So, when I called entity.Save(), it ran an update statement against the database and I got a SQL syntax error. I checked the SQL Server Profile to see the SQL, and this is what it showed me...
UPDATE [CSLATestBed].[dbo].[EditableRootItem] SET WHERE ([Id] = @Id) AND [RowVersion] = @RowVersion
It did not set any items in the SET clause because (I'm assuming), you never allow the RowVersion field (timestamp, SQL Server 2005) to be updated through EntitySpaces (makes sense), however if a developer mistakenly updates ONLY this field, you still mark the entity as dirty, thus leading to the SQL syntax issue.
I have since altered my code so that the RowVersion field never gets assigned to, however, it might make sense to not allow the entity to be made dirty by the concurrency/timestamp field if the developer mistakenly updates it.... There is no logical reason for a developer to ever do this, but letting this current behavior stay the way this way is just a trap door waiting for someone to walk into it (in my opinion).
Thoughts?
Eric