IVersioned

Interface used to define data objects that can be versioned.

Description

The IVersioned interface allows you to define data objects that can be versioned.

Important points

  • Versioning is often used as an optimistic concurrency mechanism.
  • The version doesn’t have to be a number, but it is recommended to use sequential values to determine if one object has a newer or older version than another one.
  • It is common to use the time of change as the object version.

Properties

Version

The object’s version.

string Version { get; set; }

Examples

public class MyData: IStringIdentifiable, IVersioned 
{
    string id {get; set;}
    string field1;
    int field2;
    string version {get; set;}
    ...
}
public void updateData(string correlationId, MyData item) 
{
    ...
    if (item.Version < oldItem.Version) 
    {
        throw new ConcurrencyException(null, "VERSION_CONFLICT", "The change has older version stored value");
    }
    ...
}