AppContainer.cs helps to automatically timestamp entities as they are added and updated. The CrudService.Update method wraps a call to ApplyOriginalValues; this allows you to supply an object with the entity's original values, allowing Entity Framework to carry out a concurrency check. For the check to take place, the entity should have a field (e.g. updated_at) marked with ConcurrencyMode = Fixed in the entity model. The original value is the value as it was when the entity was retrieved and send to the client. When the client posts an update, the original value should be included with the posted values. When the updated_at value is sent to the client, it should be explicitly defined as a UTC time (i.e. have Kind = UTC). Similarly, after it is received from the client, convert it to UTC if it is not already in that state. These steps ensure that the concurrency check works as expected. Use DateTime extension methods such as ToUniversalSpecifyKind to help with this conversion. Of course, the client could modify the original value in the postback to fool the concurrency check. Maybe the client should only receive a hash of the value. Or could HTTP headers such as ETag or Last-Modified help us?
The ObjectContext does not act as a cache; by default, queries fetch from the database and don't include any new uncommitted objects previously added to the context. DbContext.Find does allow you to query the in-memory context.
See http://msdn.microsoft.com/en-us/data/hh949853.aspx for EF performance considerations.