public void TestMethod_BaseEntity_AsTrackable()
        {
            int count    = 0;
            int maxCount = 1;
            var list     = new List <TreeItemBaseEntity>(maxCount);

            do
            {
                var newItem = new TreeItemBaseEntity();
                newItem.Id       = Guid.NewGuid();
                newItem.ParentId = Guid.NewGuid();
                list.Add(newItem);
                count++;
            } while (count < maxCount);

            var watch = Stopwatch.StartNew();

            try
            {
                var tr = list.AsTrackable();

                tr[0].Name = "dsds";

                var isChanged = tr.CastToIChangeTrackableCollection().IsChanged;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }


            watch.Stop();
            Debug.Print($"EntityStateMonitor Milliseconds= {watch.ElapsedMilliseconds}");
        }
        public void TestMethod_BaseEntity()
        {
            int count    = 0;
            int maxCount = 100000;
            var list     = new List <TreeItemBaseEntity>(maxCount);

            do
            {
                var newItem = new TreeItemBaseEntity();
                newItem.Id       = Guid.NewGuid();
                newItem.ParentId = Guid.NewGuid();
                list.Add(newItem);
                count++;
            } while (count < maxCount);

            var watch = Stopwatch.StartNew();
            var es    = new EntityStateMonitor();

            es.Apply(list);
            watch.Stop();
            Debug.Print($"init Milliseconds= {watch.ElapsedMilliseconds}");

            var Id = Guid.NewGuid();

            watch.Restart();
            var tmp = list.Where(x => x.Id == x.ParentId).OrderBy(x => x.Id).ToList();

            //foreach (var treeItemBaseEntity in list)
            //{
            //    treeItemBaseEntity.Id = Id;
            //}
            watch.Stop();
            Debug.Print($"EntityStateMonitor Milliseconds= {watch.ElapsedMilliseconds}");
        }