public void TestDeleteBookOk() { //SETUP var options = SqliteInMemory.CreateOptions <SqlDbContext>(); using (var context = new SqlDbContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); //ATTEMPT context.Remove(context.Books.First()); var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context); //VERIFY changes.Single().BookId.ShouldNotEqual(Guid.Empty); changes.Single().State.ShouldEqual(EntityState.Deleted); } }
public void TestUpdateDirectOk() { //SETUP var options = SqliteInMemory.CreateOptions <SqlDbContext>(); using (var context = new SqlDbContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new SqlDbContext(options)) { //ATTEMPT var book = context.Books.First(); book.AddPromotion(123, "now 123"); var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context); //VERIFY changes.Single().BookId.ShouldNotEqual(Guid.Empty); changes.Single().State.ShouldEqual(EntityState.Modified); } }
public void TestUpdateViaAuthorChangeTwoBooksOk() { //SETUP var options = SqliteInMemory.CreateOptions <SqlDbContext>(); using (var context = new SqlDbContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new SqlDbContext(options)) { //ATTEMPT var author = context.Authors.Single(x => x.Name == "Martin Fowler"); author.Name = "Different Name"; var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context); //VERIFY changes.Count.ShouldEqual(2); changes.All(x => x.State == EntityState.Modified).ShouldBeTrue(); } }
public void TestUpdateViaAuthorChangeOneBookOk() { //SETUP var options = SqliteInMemory.CreateOptions <SqlDbContext>(); using (var context = new SqlDbContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new SqlDbContext(options)) { //ATTEMPT var author = context.Authors.Single(x => x.Name == "Future Person"); author.Name = "Different Name"; var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context); //VERIFY changes.Single().BookId.ShouldNotEqual(Guid.Empty); changes.Single().State.ShouldEqual(EntityState.Modified); } }
public void TestUpdateViaNonBookEntityOk() { //SETUP var options = SqliteInMemory.CreateOptions <SqlDbContext>(); using (var context = new SqlDbContext(options)) { context.Database.EnsureCreated(); context.SeedDatabaseFourBooks(); } using (var context = new SqlDbContext(options)) { //ATTEMPT var book = context.Books.Include(x => x.Reviews).First(); book.AddReview(5, "test", "test"); var changes = BookChangeInfo.FindBookChanges(context.ChangeTracker.Entries().ToList(), context); //VERIFY changes.Single().BookId.ShouldNotEqual(Guid.Empty); changes.Single().State.ShouldEqual(EntityState.Modified); } }
/// <summary> /// This MUST be called before SavChanges. It finds any Book changes /// </summary> /// <returns>true if there are BookChanges that need projecting to NoSQL database</returns> public bool FindBookChangesToProjectToNoSql(SqlDbContext sqlContext) { _bookChanges = BookChangeInfo.FindBookChanges(sqlContext.ChangeTracker.Entries().ToList(), sqlContext); return(_bookChanges.Any()); }
/// <summary> /// This MUST be called before SavChanges. It finds any Book changes /// </summary> /// <returns>true if there are BookChanges that need projecting to NoSQL database</returns> public int FindNumBooksChanged(SqlDbContext sqlContext) { _bookChanges = BookChangeInfo.FindBookChanges(sqlContext.ChangeTracker.Entries().ToList(), sqlContext); return(_bookChanges.Count()); }