public void CompareDiffIndexes() { //SETUP var optionsBuilder = new DbContextOptionsBuilder <MyEntityIndexesDbContext>(); optionsBuilder.UseSqlServer(_connectionString); using (var context = new MyEntityIndexesDbContext(optionsBuilder.Options)) { var handler = new Stage1Comparer(context.Model, context.GetType().Name); //ATTEMPT var hasErrors = handler.CompareModelToDatabase(_databaseModel); //VERIFY hasErrors.ShouldBeTrue(); var errors = CompareLog.ListAllErrors(handler.Logs).ToList(); errors.Count.ShouldEqual(3); errors[0].ShouldEqual( "DIFFERENT: MyEntity->Property 'MyString', column type. Expected = nvarchar(450), found = nvarchar(max)"); errors[1].ShouldEqual( "NOT IN DATABASE: MyEntity->Index 'MyInt', index constraint name. Expected = MySpecialName"); errors[2].ShouldEqual( "NOT IN DATABASE: MyEntity->Index 'MyString', index constraint name. Expected = IX_MyEntites_MyString"); } }
public void TestFindsNormalIndexes() { //SETUP var options = this.CreateUniqueMethodOptionsWithLogging <MyEntityIndexesDbContext>(log => _output.WriteLine(log.ToString())); using (var context = new MyEntityIndexesDbContext(options)) { //context.Database.EnsureDeleted(); context.Database.EnsureCreated(); var comparer = new CompareEfSql(); //ATTEMPT var hasErrors = comparer.CompareEfWithDb(context); //VERIFY hasErrors.ShouldBeFalse(comparer.GetAllErrors); } }
public void TestFindsConstraintIndexes() { //SETUP var sqlScriptPath = TestData.GetFilePath("Index01*.sql"); var connectionString = this.GetUniqueDatabaseConnectionString(); connectionString.WipeCreateDatabase(); var options = new DbContextOptionsBuilder <MyEntityIndexesDbContext>() .UseSqlServer(connectionString) .Options; using (var context = new MyEntityIndexesDbContext(options)) { context.ExecuteScriptFileInTransaction(sqlScriptPath); var comparer = new CompareEfSql(); //ATTEMPT var hasErrors = comparer.CompareEfWithDb(context); //VERIFY hasErrors.ShouldBeFalse(comparer.GetAllErrors); } }