dip tracking for non-relational storages.
Property Tracking
Console.WriteLine( player.HasChanges ); // false
player.Name = "KimSlim";
Console.WriteLine( player.HasChanges ); // true
player.ConfirmChanges();
Console.WriteLine( player.HasChanges ); // false
Collection Tracking
player.Items.Clear();
Console.WriteLine( player.HasChanges ); // true
player.Items.Add(ObservedEntity.Create<Item>());
Console.WriteLine( player.HasChanges ); // true
Tracking Graph
하위 오브젝트가 바뀌면, 상위 오브젝트의 변경도 마크됨.
var sword = ObservedEntity.Create<Item>();
player.Items.Add(sword);
player.ConfirmChanges();
Console.WriteLine( player.HasChanges ); // false
sword.Grade = ItemGrade.Epic;
Console.WriteLine( player.HasChanges ); // true;
Console.WriteLine( sword.HasChanges ); // true;