コード例 #1
0
        public async Task TestDelete()
        {
            using (var container = Fixture.CreateScope())
                using (var db = container.Resolve <DatabaseContext>())
                {
                    var result = await db.Contracts.ToListAsync();

                    var toDelete = result.First();
                    toDelete.PersistChange = Data.PersistChange.Delete;

                    db.ChangeTracker.TrackGraph(toDelete, e => ChangeGraphTracker.Tracker(e));

                    await db.SaveChangesAsync(CancellationToken.None).ConfigureAwait(false);

                    result = await db.Contracts.ToListAsync();

                    Assert.True(9 == result.Count());
                }
        }
コード例 #2
0
        public async Task TestTrackerInsertData()
        {
            var fixture = new Fixture();

            using (var container = Fixture.CreateScope())
                using (var db = container.Resolve <DatabaseContext>())
                {
                    for (int i = 0; i < 10; i++)
                    {
                        var contract = fixture.Create <Contract>();
                        contract.PersistChange = Data.PersistChange.Insert;

                        db.ChangeTracker.TrackGraph(contract, e => ChangeGraphTracker.Tracker(e));

                        await db.SaveChangesAsync(CancellationToken.None).ConfigureAwait(false);
                    }

                    var result = await db.Contracts.ToListAsync();

                    Assert.True(10 == result.Count());
                }
        }
コード例 #3
0
        public async Task TestInsertAndUpdate()
        {
            var fixture = new Fixture();

            using (var container = Fixture.CreateScope())
                using (var db = container.Resolve <DatabaseContext>())
                {
                    var contract = fixture.Create <Contract>();
                    contract.PersistChange = Data.PersistChange.Insert;

                    var id = contract.Id;

                    db.ChangeTracker.TrackGraph(contract, e => ChangeGraphTracker.Tracker(e));
                    db.ChangeTracker.Clear();

                    await db.SaveChangesAsync(CancellationToken.None).ConfigureAwait(false);

                    contract = null;

                    contract = db.Contracts.First(c => c.Id == id);

                    Assert.Equal(Data.PersistChange.None, contract.PersistChange);

                    contract.PersistChange = Data.PersistChange.Update;

                    contract.Name = "Updated";

                    Assert.Equal(EntityState.Detached, db.Entry(contract).State);

                    db.ChangeTracker.TrackGraph(contract, e => ChangeGraphTracker.Tracker(e));

                    await db.SaveChangesAsync(CancellationToken.None).ConfigureAwait(false);

                    db.ChangeTracker.Clear();
                }
        }