private static async Task RunDatabaseCreationTest(SqlCeTestStore testStore, bool async) { using (var context = new BloggingContext(testStore)) { var creator = context.GetService <IRelationalDatabaseCreator>(); if (async) { Assert.True(await creator.EnsureCreatedAsync()); } else { Assert.True(creator.EnsureCreated()); } Assert.Equal(ConnectionState.Closed, context.Database.GetDbConnection().State); if (testStore.Connection.State != ConnectionState.Open) { await testStore.Connection.OpenAsync(); } var tables = testStore.Query <string>("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES "); Assert.Equal(1, tables.Count()); Assert.Equal("Blogs", tables.Single()); var columns = (testStore.Query <string>( "SELECT TABLE_NAME + '.' + COLUMN_NAME + ' (' + DATA_TYPE + ')' FROM INFORMATION_SCHEMA.COLUMNS ORDER BY TABLE_NAME, COLUMN_NAME")).ToArray(); Assert.Equal(15, columns.Length); Assert.Equal( new[] { "Blogs.AndChew (varbinary)", "Blogs.AndRow (rowversion)", "Blogs.Cheese (nvarchar)", "Blogs.CupOfChar (int)", "Blogs.ErMilan (int)", "Blogs.Fuse (smallint)", "Blogs.George (bit)", "Blogs.Key1 (nvarchar)", "Blogs.Key2 (varbinary)", "Blogs.NotFigTime (datetime)", "Blogs.On (real)", "Blogs.OrNothing (float)", "Blogs.TheGu (uniqueidentifier)", "Blogs.ToEat (tinyint)", "Blogs.WayRound (bigint)" }, columns); } }