public void CompareIssue3() { //SETUP var options = this.CreateUniqueClassOptions <Issue3DbContext>(); using (var context = new Issue3DbContext(options)) { //context.Database.EnsureDeleted(); context.Database.EnsureClean(); var comparer = new CompareEfSql(); //ATTEMPT var hasErrors = comparer.CompareEfWithDb(context); //VERIFY hasErrors.ShouldBeTrue(comparer.GetAllErrors); var errors = CompareLog.ListAllErrors(comparer.Logs).ToList(); errors.Count.ShouldEqual(1); errors[0].ShouldEqual( "DIFFERENT: Parameter->Property 'ValueAggregationTypeId', default value sql. Expected = CAST(1 AS tinyint), found = CONVERT([tinyint],(1))"); } }
public void ComparePropertySqlDefaultReversed() { //SETUP var options = GetDefaultSqlDbOptions(); DatabaseModel localDatabaseModel; using (var context = new MyEntitySqlDefaultDbContext(options)) { var dtService = context.GetDesignTimeService(); var serviceProvider = dtService.GetDesignTimeProvider(); var factory = serviceProvider.GetService <IDatabaseModelFactory>(); var connectionString = context.Database.GetDbConnection().ConnectionString; context.Database.EnsureCreated(); #if NETCOREAPP2_1 localDatabaseModel = factory.Create(connectionString, new string[] { }, new string[] { }); #elif NETCOREAPP3_0 localDatabaseModel = factory.Create(connectionString, new DatabaseModelFactoryOptions(new string[] { }, new string[] { })); #endif } using (var context = new MyEntityDbContext(_options)) { var handler = new Stage1Comparer(context.Model, context.GetType().Name); //ATTEMPT var hasErrors = handler.CompareModelToDatabase(localDatabaseModel); //VERIFY hasErrors.ShouldBeTrue(); var errors = CompareLog.ListAllErrors(handler.Logs).ToList(); errors.Count.ShouldEqual(2); errors[0].ShouldEqual( "DIFFERENT: MyEntity->Property 'MyInt', default value sql. Expected = <null>, found = 123"); errors[1].ShouldEqual( "DIFFERENT: MyEntity->Property 'MyInt', value generated. Expected = Never, found = OnAdd"); } }
public void ComparePropertySqlDefaultName() { //SETUP var optionsBuilder = new DbContextOptionsBuilder <MyEntitySqlDefaultDbContext>(); optionsBuilder.UseSqlServer(_connectionString); using (var context = new MyEntitySqlDefaultDbContext(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(2); errors[0].ShouldEqual( "DIFFERENT: MyEntity->Property 'MyInt', default value sql. Expected = 123, found = <null>"); errors[1].ShouldEqual( "DIFFERENT: MyEntity->Property 'MyInt', value generated. Expected = OnAdd, found = Never"); } }
public void CompareBookAgainstBookOrderDatabaseHasErrors() { //SETUP using (var context = new BookContext(GetBookContextOptions())) { var config = new CompareEfSqlConfig { TablesToIgnoreCommaDelimited = "" }; var comparer = new CompareEfSql(config); //ATTEMPT var hasErrors = comparer.CompareEfWithDb(_connectionString, context); //VERIFY hasErrors.ShouldBeTrue(); var errors = CompareLog.ListAllErrors(comparer.Logs).ToList(); errors.Count.ShouldEqual(2); errors[0].ShouldEqual( "EXTRA IN DATABASE: EfCore.TestSupport-Test_ComparerBooksAndOrders->Table 'Orders'"); errors[1].ShouldEqual( "EXTRA IN DATABASE: EfCore.TestSupport-Test_ComparerBooksAndOrders->Table 'LineItem'"); } }