public async Task Auto_DetectChanges_for_SaveChanges_can_be_switched_off(bool async) { var provider = InMemoryTestHelpers.Instance.CreateServiceProvider(); using (var context = new ButTheHedgehogContext(provider)) { context.ChangeTracker.AutoDetectChangesEnabled = false; Assert.False(context.ChangeTracker.AutoDetectChangesEnabled); var product = context.Add( new Product { Id = 1, Name = "Little Hedgehogs" }).Entity; if (async) { await context.SaveChangesAsync(); } else { context.SaveChanges(); } product.Name = "Cracked Cookies"; if (async) { await context.SaveChangesAsync(); } else { context.SaveChanges(); } } using (var context = new ButTheHedgehogContext(provider)) { Assert.Equal("Little Hedgehogs", context.Products.Single().Name); } }
public async Task SaveChangesAsync_with_canceled_token() { var loggerFactory = new ListLoggerFactory(); var provider = InMemoryTestHelpers.Instance.CreateServiceProvider( new ServiceCollection().AddSingleton <ILoggerFactory>(loggerFactory)); using var context = new ButTheHedgehogContext(provider); context.Products.Add(new Product()); await Assert.ThrowsAnyAsync <OperationCanceledException>(() => context.SaveChangesAsync(new CancellationToken(canceled: true))); Assert.Contains(CoreEventId.SaveChangesCanceled, loggerFactory.Log.Select(l => l.Id)); Assert.DoesNotContain(CoreEventId.SaveChangesFailed, loggerFactory.Log.Select(l => l.Id)); }
public async Task Auto_DetectChanges_for_SaveChanges_can_be_switched_off(bool async) { var provider = TestHelpers.Instance.CreateServiceProvider(); using (var context = new ButTheHedgehogContext(provider)) { context.ChangeTracker.AutoDetectChangesEnabled = false; Assert.False(context.ChangeTracker.AutoDetectChangesEnabled); var product = context.Attach(new Product { Id = 1, Name = "Little Hedgehogs" }, behavior: GraphBehavior.SingleObject).Entity; product.Name = "Cracked Cookies"; if (async) { await context.SaveChangesAsync(); } else { context.SaveChanges(); } } using (var context = new ButTheHedgehogContext(provider)) { Assert.Empty(context.Products); } }
public async Task SaveChanges_calls_DetectChanges_by_default(bool async) { var provider = TestHelpers.Instance.CreateServiceProvider(); using (var context = new ButTheHedgehogContext(provider)) { Assert.True(context.ChangeTracker.AutoDetectChangesEnabled); var product = context.Attach(new Product { Id = 1, Name = "Little Hedgehogs" }, behavior: GraphBehavior.SingleObject).Entity; product.Name = "Cracked Cookies"; if (async) { await context.SaveChangesAsync(); } else { context.SaveChanges(); } } using (var context = new ButTheHedgehogContext(provider)) { Assert.Equal("Cracked Cookies", context.Products.Single().Name); } }