public void Mappings_AreCorrectly_Setup()
        {
            string connectionString = GetConnectionString();
            TruncateAllTables(connectionString);

            Build expectedBuild = CreateBuild();

            using (var db = new MetricsDbContext(connectionString))
            {
                db.Builds.Add(expectedBuild);

                Task saveTask = db.SaveChangesAsync();
                saveTask.Wait();
            }

            List<Build> allBuilds;
            using (var anotherDbInstance = new MetricsDbContext(connectionString))
            {
                var db = anotherDbInstance;

                var queryTask = (from b in db.Builds select b).ToListAsync();
                queryTask.Wait();

                allBuilds = queryTask.Result;
            }
            allBuilds.ShouldNotBeNullAndHaveCount(1);

            Build actualBuild = allBuilds.First();
            actualBuild.Id.Should().NotBe(0);

            actualBuild.ShouldBeEquivalentTo(expectedBuild,
                options => options.Including(p => p.Name));
        }
        private void TruncateAllTables(string connectionString)
        {
            var asmName = Assembly.GetExecutingAssembly().GetName().Name;
            var resourceName = string.Format("{0}.Scripts.DeleteAllData.sql", asmName);

            // ReSharper disable once AssignNullToNotNullAttribute
            var streamReader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName));

            string sql;
            using (streamReader)
                sql = streamReader.ReadToEnd();

            using (var db = new MetricsDbContext(connectionString))
                db.Database.ExecuteSqlCommand(sql);
        }