public virtual void Can_change_principal_and_dependent_instance_non_derived() { using (CreateTestStore( modelBuilder => { OnModelCreating(modelBuilder); modelBuilder.Entity <Engine>().ToTable("Engines"); modelBuilder.Entity <FuelTank>( eb => { eb.ToTable("FuelTanks"); eb.HasOne(e => e.Engine) .WithOne(e => e.FuelTank) .HasForeignKey <FuelTank>(e => e.VehicleName) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Ignore <SolidFuelTank>(); modelBuilder.Ignore <SolidRocket>(); })) { using (var context = CreateContext()) { var bike = context.Vehicles.Include(v => v.Operator).Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); var newBike = new Vehicle { Name = "Trek Pro Fit Madone 6 Series", Operator = new LicensedOperator { Name = "repairman", LicenseType = "Repair" }, SeatingCapacity = 2 }; context.Remove(bike); context.Add(newBike); TestSqlLoggerFactory.Clear(); context.SaveChanges(); Assert.Empty(context.ChangeTracker.Entries().Where(e => e.State != EntityState.Unchanged)); } using (var context = CreateContext()) { var bike = context.Vehicles.Include(v => v.Operator).Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal(2, bike.SeatingCapacity); Assert.Equal("repairman", bike.Operator.Name); Assert.Equal("Repair", ((LicensedOperator)bike.Operator).LicenseType); } } }
public virtual void Can_change_dependent_instance_non_derived() { using (CreateTestStore( modelBuilder => { OnModelCreating(modelBuilder); modelBuilder.Entity <Engine>().ToTable("Engines"); modelBuilder.Entity <FuelTank>( eb => { eb.ToTable("FuelTanks"); eb.HasOne(e => e.Engine) .WithOne(e => e.FuelTank) .HasForeignKey <FuelTank>(e => e.VehicleName) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Ignore <SolidFuelTank>(); modelBuilder.Ignore <SolidRocket>(); })) { using (var context = CreateContext()) { var bike = context.Vehicles.Include(v => v.Operator).Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); bike.Operator = new Operator { Name = "Chris Horner" }; context.ChangeTracker.DetectChanges(); bike.Operator = new LicensedOperator { Name = "repairman", LicenseType = "Repair" }; TestSqlLoggerFactory.Clear(); context.SaveChanges(); } using (var context = CreateContext()) { var bike = context.Vehicles.Include(v => v.Operator).Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal("repairman", bike.Operator.Name); Assert.Equal("Repair", ((LicensedOperator)bike.Operator).LicenseType); } } }
public override void Can_change_principal_instance_non_derived() { base.Can_change_principal_instance_non_derived(); TestSqlLoggerFactory.AssertBaseline(new[] { @"@p1='Trek Pro Fit Madone 6 Series' (Nullable = false) (Size = 450) @p0='2' SET NOCOUNT ON; UPDATE [Vehicles] SET [SeatingCapacity] = @p0 WHERE [Name] = @p1; SELECT @@ROWCOUNT;" }, assertOrder: false); }
public virtual async Task Can_change_principal_instance_non_derived() { await InitializeAsync( modelBuilder => { OnModelCreating(modelBuilder); modelBuilder.Entity <Engine>().ToTable("Engines"); modelBuilder.Entity <FuelTank>( eb => { eb.ToTable("FuelTanks"); eb.HasOne(e => e.Engine) .WithOne(e => e.FuelTank) .HasForeignKey <FuelTank>(e => e.VehicleName) .OnDelete(DeleteBehavior.Restrict); }); modelBuilder.Ignore <SolidFuelTank>(); modelBuilder.Ignore <SolidRocket>(); }); using (var context = CreateContext()) { var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); var newBike = new Vehicle { Name = "Trek Pro Fit Madone 6 Series", Operator = bike.Operator, SeatingCapacity = 2 }; context.Remove(bike); context.Add(newBike); TestSqlLoggerFactory.Clear(); context.SaveChanges(); Assert.Empty(context.ChangeTracker.Entries().Where(e => e.State != EntityState.Unchanged)); } using (var context = CreateContext()) { var bike = context.Vehicles.Include(v => v.Operator).Single(v => v.Name == "Trek Pro Fit Madone 6 Series"); Assert.Equal(2, bike.SeatingCapacity); Assert.NotNull(bike.Operator); } }
public override void Can_change_dependent_instance_non_derived() { base.Can_change_dependent_instance_non_derived(); TestSqlLoggerFactory.AssertBaseline(new [] { @"@p3='Trek Pro Fit Madone 6 Series' (Nullable = false) (Size = 450) @p0='LicensedOperator' (Nullable = false) (Size = 4000) @p1='repairman' (Size = 4000) @p2='Repair' (Size = 4000) SET NOCOUNT ON; UPDATE [Vehicles] SET [Operator_Discriminator] = @p0, [Operator_Name] = @p1, [LicenseType] = @p2 WHERE [Name] = @p3; SELECT @@ROWCOUNT;" }, assertOrder: false); }
protected TestStore CreateTestStore(Action <ModelBuilder> onModelCreating) { TestStore = TestStoreFactory.Create(DatabaseName); ServiceProvider = TestStoreFactory.AddProviderServices(new ServiceCollection()) .AddSingleton(TestModelSource.GetFactory(onModelCreating)) .BuildServiceProvider(validateScopes: true); TestStore.Initialize(ServiceProvider, CreateContext, c => ((TransportationContext)c).Seed()); TestSqlLoggerFactory.Clear(); // To enable logging //TestSqlLoggerFactory.SetTestOutputHelper(TestOutputHelper); return(TestStore); }
public void Keys_generated_in_batches(int count, int expected) { var loggerFactory = new TestSqlLoggerFactory(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkSqlServer() .AddSingleton <ILoggerFactory>(loggerFactory) .BuildServiceProvider(); using (var context = new ConfiguredChipsContext(serviceProvider, _testStore.Name)) { context.Database.EnsureCreated(); for (var i = 0; i < count; i++) { context.Chips.Add(new KettleChips { BestBuyDate = DateTime.Now, Name = "Doritos Locos Tacos " + i }); } context.SaveChanges(); } Assert.Equal(expected, CountSqlLinesContaining("SELECT NEXT VALUE FOR", loggerFactory.Sql)); }
public CommandConfigurationTest() { TestSqlLoggerFactory.Clear(); }
protected void AssertContainsSql(params string[] expected) => TestSqlLoggerFactory.AssertBaseline(expected, assertOrder: false);
protected void AssertSql(params string[] expected) => TestSqlLoggerFactory.AssertBaseline(expected);