Example #1
0
        public void Include_on_entity_with_composite_key_Many_To_One_bugs_925_926()
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkNpgsql()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var query  = ctx.Orders.Include(o => o.Customer);
                var result = query.ToList();

                Assert.Equal(5, result.Count);
                Assert.NotNull(result[0].Customer);
                Assert.NotNull(result[1].Customer);
                Assert.NotNull(result[2].Customer);
                Assert.NotNull(result[3].Customer);
                Assert.NotNull(result[4].Customer);

                var expectedSql =
                    @"SELECT ""o"".""Id"", ""o"".""CustomerFirstName"", ""o"".""CustomerLastName"", ""o"".""Name"", ""c"".""FirstName"", ""c"".""LastName""
FROM ""Order"" AS ""o""
LEFT JOIN ""Customer"" AS ""c"" ON (""o"".""CustomerFirstName"" = ""c"".""FirstName"") AND (""o"".""CustomerLastName"" = ""c"".""LastName"")";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
Example #2
0
        public void Include_on_entity_with_composite_key_One_To_Many_bugs_925_926()
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkNpgsql()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var query  = ctx.Customers.Include(c => c.Orders).OrderBy(c => c.FirstName).ThenBy(c => c.LastName);
                var result = query.ToList();

                Assert.Equal(2, result.Count);
                Assert.Equal(2, result[0].Orders.Count);
                Assert.Equal(3, result[1].Orders.Count);

                var expectedSql =
                    @"SELECT ""c"".""FirstName"", ""c"".""LastName""
FROM ""Customer"" AS ""c""
ORDER BY ""c"".""FirstName"", ""c"".""LastName""

SELECT ""o"".""Id"", ""o"".""CustomerFirstName"", ""o"".""CustomerLastName"", ""o"".""Name""
FROM ""Order"" AS ""o""
WHERE EXISTS (
    SELECT 1
    FROM ""Customer"" AS ""c""
    WHERE (""o"".""CustomerFirstName"" = ""c"".""FirstName"") AND (""o"".""CustomerLastName"" = ""c"".""LastName""))
ORDER BY ""o"".""CustomerFirstName"", ""o"".""CustomerLastName""";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
Example #3
0
        public void Execute1742(CustomerDetails_1742 details)
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkNpgsql()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var firstName = details.FirstName;

                ctx.Customers.Where(c => c.FirstName == firstName && c.LastName == details.LastName).ToList();

                const string expectedSql
                    = @"@__firstName_0: Foo
@__8__locals1_details_LastName_1: Bar

SELECT ""c"".""FirstName"", ""c"".""LastName""
FROM ""Customer"" AS ""c""
WHERE (""c"".""FirstName"" = @__firstName_0) AND (""c"".""LastName"" = @__8__locals1_details_LastName_1)";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
Example #4
0
        public void ThenInclude_with_interface_navigations_3409()
        {
            CreateDatabase3409();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkSqlServer()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var context = new MyContext3409(serviceProvider))
            {
                var results = context.Parents
                              .Include(p => p.ChildCollection)
                              .ThenInclude(c => c.SelfReferenceCollection)
                              .ToList();

                Assert.Equal(1, results.Count);
                Assert.Equal(1, results[0].ChildCollection.Count);
                Assert.Equal(2, results[0].ChildCollection.Single().SelfReferenceCollection.Count);
            }

            using (var context = new MyContext3409(serviceProvider))
            {
                var results = context.Children
                              .Include(c => c.SelfReferenceBackNavigation)
                              .ThenInclude(c => c.ParentBackNavigation)
                              .ToList();

                Assert.Equal(3, results.Count);
                Assert.Equal(2, results.Count(c => c.SelfReferenceBackNavigation != null));
                Assert.Equal(1, results.Count(c => c.ParentBackNavigation != null));
            }
        }
        public virtual void Repro3101_coalesce_tracking()
        {
            CreateDatabase3101();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkSqlServer()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext3101(serviceProvider))
            {
                var query = from eVersion in ctx.Entities
                            join eRoot in ctx.Entities
                            on eVersion.RootEntityId equals(int?) eRoot.Id
                            into RootEntities
                            from eRootJoined in RootEntities.DefaultIfEmpty()
                            select new { eRootJoined, eVersion, foo = eRootJoined ?? eVersion };

                var result = query.ToList();

                var foo = ctx.ChangeTracker.Entries().ToList();
                Assert.True(ctx.ChangeTracker.Entries().Count() > 0);
            }
        }
Example #6
0
        private static void CreateTestStore <TContext>(
            string databaseName,
            IServiceProvider serviceProvider,
            Func <IServiceProvider, DbContextOptions, TContext> contextCreator,
            Action <TContext> contextInitializer)
            where TContext : DbContext, IDisposable
        {
            var connectionString = NpgsqlTestStore.CreateConnectionString(databaseName);

            NpgsqlTestStore.GetOrCreateShared(databaseName, () =>
            {
                var optionsBuilder = new DbContextOptionsBuilder();
                optionsBuilder.UseNpgsql(connectionString);

                using (var context = contextCreator(serviceProvider, optionsBuilder.Options))
                {
                    if (context.Database.EnsureCreated())
                    {
                        contextInitializer(context);
                    }

                    TestSqlLoggerFactory.Reset();
                }
            });
        }
        public InheritanceSqliteFixture()
        {
            _serviceProvider
                = new ServiceCollection()
                  .AddEntityFramework()
                  .AddSqlite()
                  .ServiceCollection()
                  .AddSingleton(TestSqliteModelSource.GetFactory(OnModelCreating))
                  .AddInstance <ILoggerFactory>(new TestSqlLoggerFactory())
                  .BuildServiceProvider();

            var testStore = SqliteTestStore.CreateScratch();

            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlite(testStore.Connection);
            _options = optionsBuilder.Options;

            // TODO: Do this via migrations & update pipeline

            testStore.ExecuteNonQuery(@"
                DROP TABLE IF EXISTS Country;
                DROP TABLE IF EXISTS Animal;

                CREATE TABLE Country (
                    Id int NOT NULL PRIMARY KEY,
                    Name nvarchar(100) NOT NULL
                );

                CREATE TABLE Animal (
                    Species nvarchar(100) NOT NULL PRIMARY KEY,
                    Name nvarchar(100) NOT NULL,
                    CountryId int NOT NULL ,
                    IsFlightless bit NOT NULL,
                    EagleId nvarchar(100),
                    'Group' int,
                    FoundOn tinyint,
                    Discriminator nvarchar(255),

                    FOREIGN KEY(countryId) REFERENCES Country(Id),
                    FOREIGN KEY(EagleId) REFERENCES Animal(Species)
                );

                CREATE TABLE Plant (
                    Genus int NOT NULL,
                    Species nvarchar(100) NOT NULL PRIMARY KEY,
                    Name nvarchar(100) NOT NULL,
                    CountryId int,
                    HasThorns bit,

                    FOREIGN KEY(countryId) REFERENCES Country(Id)
                );
            ");

            using (var context = CreateContext())
            {
                SeedData(context);
            }
            TestSqlLoggerFactory.Reset();
        }
        public void Include_on_entity_with_composite_key_Many_To_One_bugs_925_926()
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkSqlServer()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var query  = ctx.Orders.Include(o => o.Customer);
                var result = query.ToList();

                Assert.Equal(5, result.Count);
                Assert.NotNull(result[0].Customer);
                Assert.NotNull(result[1].Customer);
                Assert.NotNull(result[2].Customer);
                Assert.NotNull(result[3].Customer);
                Assert.NotNull(result[4].Customer);

                var expectedSql =
                    @"SELECT [o].[Id], [o].[CustomerFirstName], [o].[CustomerLastName], [o].[Name], [c].[FirstName], [c].[LastName]
FROM [Order] AS [o]
LEFT JOIN [Customer] AS [c] ON ([o].[CustomerFirstName] = [c].[FirstName]) AND ([o].[CustomerLastName] = [c].[LastName])";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
Example #9
0
        public virtual async Task Can_change_principal_instance_non_derived()
        {
            var options = Fixture.CreateOptions();

            using (var context = new EmbeddedTransportationContext(options))
            {
                var bike = await context.Vehicles.SingleAsync(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();
                await context.SaveChangesAsync();
            }

            using (var context = new EmbeddedTransportationContext(options))
            {
                var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series");

                Assert.Equal(2, bike.SeatingCapacity);
                Assert.NotNull(bike.Operator);
            }
        }
Example #10
0
        public void Include_on_entity_with_composite_key_One_To_Many_bugs_925_926()
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFrameworkSqlServer()
                                  .AddSingleton <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var query  = ctx.Customers.Include(c => c.Orders).OrderBy(c => c.FirstName).ThenBy(c => c.LastName);
                var result = query.ToList();

                Assert.Equal(2, result.Count);
                Assert.Equal(2, result[0].Orders.Count);
                Assert.Equal(3, result[1].Orders.Count);

                var expectedSql =
                    @"SELECT [c].[FirstName], [c].[LastName]
FROM [Customer] AS [c]
ORDER BY [c].[FirstName], [c].[LastName]

SELECT [o].[Id], [o].[CustomerFirstName], [o].[CustomerLastName], [o].[Name]
FROM [Order] AS [o]
INNER JOIN (
    SELECT DISTINCT [c].[FirstName], [c].[LastName]
    FROM [Customer] AS [c]
) AS [c0] ON ([o].[CustomerFirstName] = [c0].[FirstName]) AND ([o].[CustomerLastName] = [c0].[LastName])
ORDER BY [c0].[FirstName], [c0].[LastName]";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
Example #11
0
            /// <summary>
            /// Initializes a <see cref="CompatibilityQueryNpgsqlFixure"/>.
            /// </summary>
            // ReSharper disable once UnusedMember.Global
            public CompatibilityQueryNpgsqlFixure()
            {
                TestSqlLoggerFactory = new TestSqlLoggerFactory();

                _testStore = NpgsqlTestStore.CreateScratch();

                using (CompatibilityContext context = CreateContext())
                {
                    context.Database.EnsureCreated();

                    context.CompatibilityTestEntities.AddRange(
                        new CompatibilityTestEntity
                    {
                        Id       = 1,
                        DateTime = new DateTime(2018, 06, 23)
                    },
                        new CompatibilityTestEntity
                    {
                        Id       = 2,
                        DateTime = new DateTime(2018, 06, 23)
                    },
                        new CompatibilityTestEntity
                    {
                        Id       = 3,
                        DateTime = new DateTime(2018, 06, 23)
                    });

                    context.SaveChanges();
                }
            }
        public void Keys_generated_in_batches(int count, int expected)
        {
            var loggerFactory   = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFramework()
                                  .AddSqlServer()
                                  .ServiceCollection()
                                  .AddSingleton <ILoggerFactory>(loggerFactory)
                                  .BuildServiceProvider();

            using (var context = new ConfiguredChipsContext(serviceProvider))
            {
                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"));
        }
        public async System.Threading.Tasks.Task Stream_Generate_Insert_For_Single_Entity()
        {
            using (var testDatabase = SqlServerTestStore.Create(DatabaseName))
            {
                var loggingFactory  = new TestSqlLoggerFactory();
                var serviceProvider = new ServiceCollection()
                                      .AddEntityFrameworkSqlServer()
                                      .AddSingleton <ILoggerFactory>(loggingFactory)
                                      .BuildServiceProvider();

                var optionsBuilder = new DbContextOptionsBuilder()
                                     .EnableSensitiveDataLogging()
                                     .UseSqlServer(testDatabase.ConnectionString, b => b.ApplyConfiguration())
                                     .UseInternalServiceProvider(serviceProvider);

                using (var db = new BloggingContext(optionsBuilder.Options))
                {
                    await CreateBlogDatabaseAsync <Blog>(db);
                }

                loggingFactory.Clear();

                using (var db = new BloggingContext(optionsBuilder.Options))
                {
                    var toAdd = db.Add(new Blog
                    {
                        Name       = "Blog to Insert",
                        George     = true,
                        TheGu      = new Guid("0456AEF1-B7FC-47AA-8102-975D6BA3A9BF"),
                        NotFigTime = new DateTime(1973, 9, 3, 0, 10, 33, 777),
                        ToEat      = 64,
                        OrNothing  = 0.123456789,
                        Fuse       = 777,
                        WayRound   = 9876543210,
                        Away       = 0.12345f,
                        AndChew    = new byte[16]
                    }).Entity;

                    var statement = "";
                    using (var stream = new MemoryStream())
                    {
                        db.Generate(stream);
                        stream.Seek(0, SeekOrigin.Begin);
                        var streamReader = new StreamReader(stream);
                        statement = await streamReader.ReadToEndAsync();

                        Assert.IsTrue(!string.IsNullOrEmpty(statement));
                    }


                    var reader = new StringReader(statement);
                    IList <ParseError> errors;
                    var parser = new TSql140Parser(false);

                    var parseResult = parser.Parse(reader, out errors);

                    Assert.IsFalse(errors.Any());
                }
            }
        }
Example #14
0
        public void Execute1742(CustomerDetails_1742 details)
        {
            CreateDatabase925();

            var loggingFactory  = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                                  .AddEntityFramework()
                                  .AddSqlServer()
                                  .ServiceCollection()
                                  .AddInstance <ILoggerFactory>(loggingFactory)
                                  .BuildServiceProvider();

            using (var ctx = new MyContext925(serviceProvider))
            {
                var firstName = details.FirstName;

                ctx.Customers.Where(c => c.FirstName == firstName && c.LastName == details.LastName).ToList();

                const string expectedSql
                    = @"@__firstName_0: Foo
@__8__locals1_details_LastName_1: Bar

SELECT [c].[FirstName], [c].[LastName]
FROM [Customer] AS [c]
WHERE ([c].[FirstName] = @__firstName_0) AND ([c].[LastName] = @__8__locals1_details_LastName_1)";

                Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
            }
        }
        public virtual void Can_change_principal_instance_non_derived()
        {
            using (CreateTestStore())
            {
                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
                    };

                    var oldEntry = context.Remove(bike);
                    var newEntry = context.Add(newBike);

                    TestSqlLoggerFactory.Clear();
                    context.SaveChanges();
                }

                using (var context = CreateContext())
                {
                    var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series");

                    Assert.Equal(2, bike.SeatingCapacity);
                    Assert.NotNull(bike.Operator);
                }
            }
        }
        public virtual void Can_change_nested_instance_non_derived()
        {
            using (CreateTestStore())
            {
                using (var context = CreateContext())
                {
                    var bike = context.Vehicles.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"
                    };

                    TestSqlLoggerFactory.Clear();
                    context.SaveChanges();
                }

                using (var context = CreateContext())
                {
                    var bike = context.Vehicles.Single(v => v.Name == "Trek Pro Fit Madone 6 Series");
                    Assert.Equal("repairman", bike.Operator.Name);
                }
            }
        }
Example #17
0
        public virtual async Task Can_change_nested_instance_non_derived()
        {
            var options = Fixture.CreateOptions();

            using (var context = new EmbeddedTransportationContext(options))
            {
                var bike = await context.Vehicles.SingleAsync(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"
                };

                TestSqlLoggerFactory.Clear();
                await context.SaveChangesAsync();
            }

            using (var context = new EmbeddedTransportationContext(options))
            {
                var bike = await context.Vehicles.SingleAsync(v => v.Name == "Trek Pro Fit Madone 6 Series");

                Assert.Equal("repairman", bike.Operator.Name);
            }
        }
Example #18
0
 public override void CreateTestStore()
 {
     using (var context = CreateContext())
     {
         context.Database.EnsureClean();
         Seed(context);
         TestSqlLoggerFactory.Reset();
     }
 }
    public static void AssertContains(this TestSqlLoggerFactory testSqlLoggerFactory, params string[] expected)
    {
        string[] expectedFixed = new string[expected.Length];
        int      i             = 0;

        foreach (var item in expected)
        {
            expectedFixed[i++] = item.Replace("\r\n", "\n");
        }
        testSqlLoggerFactory.AssertBaseline(expectedFixed, assertOrder: false);
    }
 public override SqlServerTestStore CreateTestStore()
 {
     return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
     {
         using (var context = new LoadContext(_options))
         {
             context.Database.EnsureCreated();
             Seed(context);
             TestSqlLoggerFactory.Reset();
         }
     }));
 }
 public ExecutionStrategyTest(ExecutionStrategyFixture fixture)
 {
     Fixture   = fixture;
     TestStore = SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
     {
         using (var context = CreateContext())
         {
             context.Database.EnsureCreated();
             TestSqlLoggerFactory.Reset();
         }
     });
 }
        public async System.Threading.Tasks.Task Stream_Generate_Delete_For_Single_Entity()
        {
            using (var testDatabase = SqlServerTestStore.Create(DatabaseName))
            {
                var loggingFactory  = new TestSqlLoggerFactory();
                var serviceProvider = new ServiceCollection()
                                      .AddEntityFrameworkSqlServer()
                                      .AddSingleton <ILoggerFactory>(loggingFactory)
                                      .BuildServiceProvider();

                var optionsBuilder = new DbContextOptionsBuilder()
                                     .EnableSensitiveDataLogging()
                                     .UseSqlServer(testDatabase.ConnectionString, b => b.ApplyConfiguration())
                                     .UseInternalServiceProvider(serviceProvider);

                using (var db = new BloggingContext(optionsBuilder.Options))
                {
                    await CreateBlogDatabaseAsync <Blog>(db);
                }

                loggingFactory.Clear();

                using (var db = new BloggingContext(optionsBuilder.Options))
                {
                    var toDelete = db.Blogs.Single(b => b.Name == "Blog2");
                    toDelete.Name = "Blog to delete";
                    var deletedId = toDelete.Id;


                    db.Entry(toDelete).State = EntityState.Deleted;

                    var statement = "";

                    using (var stream = new MemoryStream())
                    {
                        db.Generate(stream);
                        stream.Seek(0, SeekOrigin.Begin);
                        var streamReader = new StreamReader(stream);
                        statement = await streamReader.ReadToEndAsync();

                        Assert.IsTrue(!string.IsNullOrEmpty(statement));
                    }

                    var reader = new StringReader(statement);
                    IList <ParseError> errors;
                    var parser = new TSql140Parser(false);

                    var parseResult = parser.Parse(reader, out errors);

                    Assert.IsFalse(errors.Any());
                }
            }
        }
Example #23
0
        public override SqlServerTestStore CreateTestStore()
        {
            return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
            {
                using (var context = new ComplexNavigationsContext(_options))
                {
                    context.Database.EnsureCreated();
                    ComplexNavigationsModelInitializer.Seed(context);

                    TestSqlLoggerFactory.Reset();
                }
            }));
        }
Example #24
0
        protected override void CreateAndSeedDatabase(string databaseName, Func <MonsterContext> createContext, Action <MonsterContext> seed)
        {
            _testStore = NpgsqlTestStore.GetOrCreateShared(databaseName, () =>
            {
                using (var context = createContext())
                {
                    context.Database.EnsureCreated();
                    seed(context);

                    TestSqlLoggerFactory.Reset();
                }
            });
        }
        public override SqliteTestStore CreateTestStore()
        {
            return(SqliteTestStore.GetOrCreateShared(DatabaseName, () =>
            {
                using (var context = new GearsOfWarContext(_options))
                {
                    context.Database.EnsureClean();
                    GearsOfWarModelInitializer.Seed(context);

                    TestSqlLoggerFactory.Reset();
                }
            }));
        }
Example #26
0
        public virtual void Can_change_nested_instance_non_derived()
        {
            using (CreateTestStore(
                       modelBuilder =>
            {
                OnModelCreating(modelBuilder);
                modelBuilder.Entity <Engine>().ToContainer("TransportationContext");
                modelBuilder.Entity <FuelTank>(
                    eb =>
                {
                    eb.ToContainer("TransportationContext");
                    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");

                    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.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 SqlServerTestStore CreateTestStore()
        => SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
        {
            var optionsBuilder = new DbContextOptionsBuilder()
                                 .UseSqlServer(_connectionString, b => b.ApplyConfiguration())
                                 .UseInternalServiceProvider(_serviceProvider);

            using (var context = new DataAnnotationContext(optionsBuilder.Options))
            {
                context.Database.EnsureCreated();
                DataAnnotationModelInitializer.Seed(context);

                TestSqlLoggerFactory.Reset();
            }
        });
Example #28
0
        public override SqliteTestStore CreateTestStore() =>
        SqliteTestStore.GetOrCreateShared(
            DatabaseName,
            () =>
        {
            using (var context = new UpdatesContext(new DbContextOptionsBuilder()
                                                    .UseSqlite(_connectionString)
                                                    .UseInternalServiceProvider(_serviceProvider).Options))
            {
                context.Database.EnsureClean();
                UpdatesModelInitializer.Seed(context);

                TestSqlLoggerFactory.Reset();
            }
        });
    public static void AssertSql(this TestSqlLoggerFactory testSqlLoggerFactory, params string[] expected)
    {
        string[] expectedFixed = new string[expected.Length];
        int      i             = 0;

        foreach (var item in expected)
        {
            if (IgnoreStatement(item))
            {
                return;
            }
            expectedFixed[i++] = item.Replace("\r\n", "\n");
        }
        testSqlLoggerFactory.AssertBaseline(expectedFixed);
    }
        public override SqlServerTestStore CreateTestStore()
        {
            return(SqlServerTestStore.GetOrCreateShared(DatabaseName, () =>
            {
                using (var context = new NullSemanticsContext(new DbContextOptionsBuilder()
                                                              .UseSqlServer(_connectionString, b => b.ApplyConfiguration())
                                                              .UseInternalServiceProvider(_serviceProvider).Options))
                {
                    context.Database.EnsureCreated();
                    NullSemanticsModelInitializer.Seed(context);

                    TestSqlLoggerFactory.Reset();
                }
            }));
        }
        public void Keys_generated_in_batches(int count, int expected)
        {
            var loggerFactory = new TestSqlLoggerFactory();
            var serviceProvider = new ServiceCollection()
                .AddEntityFramework()
                .AddSqlServer()
                .ServiceCollection()
                .AddInstance<ILoggerFactory>(loggerFactory)
                .AddSingleton<SqlServerModificationCommandBatchFactory, TestSqlServerModificationCommandBatchFactory>()
                .BuildServiceProvider();

            using (var context = new ConfiguredChipsContext(serviceProvider, "KettleChips"))
            {
                context.Database.EnsureCreated();

                for (int 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"));
        }