public void DatabaseErrosWithetId()
        {
            _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString();
            Cleanup();

            var core = new FileCore<int, long>(new Seed32(999));
            var formatter = TestResourceFactory.CreateJsonFormatterWithoutArrayFormatting();

            var stopWatch = new Stopwatch();

            using (var db = new Database<int, MockClassA>(_testName + ".database", "Id", core))
            {
                db.Load();

                using (var t = db.BeginTransaction())
                {
                    var a = TestResourceFactory.CreateRandom();
                    a.Id = 5;

                    var obj = JObject.FromObject(a, formatter.Serializer);

                    db.AddJObj(obj);
                }
            }
        }
        public void DatabaseFetechesJObject()
        {
            _testName = MethodInfo.GetCurrentMethod().Name.GetHashCode().ToString();

            var core = new FileCore<int, long>(new Seed32(999));
            var formatter = TestResourceFactory.CreateJsonFormatterWithoutArrayFormatting();

            var stopWatch = new Stopwatch();

            using (var fLock = new ManagedFileLock(_testName))
            {
                Cleanup();

                using (var db = new Database<int, MockClassA>(_testName + ".database", "Id", core))
                {
                    db.Load();

                    using (var t = db.BeginTransaction())
                    {
                        TestResourceFactory.GetMockClassAObjects(5000).ToList().ForEach(a => db.AddJObj(JObject.FromObject(a, formatter.Serializer)));

                        t.Commit();
                    }

                    stopWatch.Reset();
                    stopWatch.Start();
                    var gets = db.SelectJObjLast(o => o.Value<int>("Id") > 4000, 10);
                    stopWatch.Stop();

                    Console.WriteLine("query with 10 last records retreived in {0} seconds", stopWatch.ElapsedMilliseconds / 1000m);

                    Assert.AreEqual(10, gets.Count());

                    foreach (var item in gets)
                        Assert.Greater(item.Value<int>("Id"), 4989);

                    var obj = db.FetchJObj(4000);

                    Assert.AreEqual(obj.Value<int>("Id"), 4000);
                }

                using (var db = new Database<int, MockClassA>(_testName + ".database"))
                {
                    var len = db.Load();

                    stopWatch.Reset();
                    stopWatch.Start();
                    var gets = db.SelectLast(o => o.Value<int>("Id") > 4000, 10);
                    stopWatch.Stop();

                    Console.WriteLine("query with 10 last records retreived in {0} seconds", stopWatch.ElapsedMilliseconds / 1000m);

                    Assert.AreEqual(10, gets.Count());

                    foreach (var item in gets)
                        Assert.Greater(item.Id, 4000);

                    var obj = db.FetchJObj(4000);

                    Assert.AreEqual(obj.Value<int>("Id"), 4000);
                }
            }
        }