public void CheckServerDb(DatabaseProviders dbProvider) { Route4MeDbContext _route4meDbContext; Route4MeDbManager r4mdbManager; var curPath = Directory.GetCurrentDirectory(); var configBuilder = new ConfigurationBuilder() .SetBasePath(curPath) .AddJsonFile("appsettings.json", optional: true); var config = configBuilder.Build(); Route4MeDbManager.DatabaseProvider = dbProvider; r4mdbManager = new Route4MeDbManager(config); _route4meDbContext = r4mdbManager.Route4MeContext; try { if (!_route4meDbContext.Database.CanConnect()) { Skip = "Cannot find " + dbProvider + " server"; //return; } if (!(_route4meDbContext.Database.GetService <IDatabaseCreator>() as RelationalDatabaseCreator).Exists()) { Skip = "Route4MeDB not exists in the " + dbProvider + " server."; return; } } catch (Exception) { Skip = "Cannot run the tests for " + dbProvider + " server."; } }
public void GetDbContext(DatabaseProviders dbProvider) { Route4MeDbManager.DatabaseProvider = dbProvider; var curPath = Directory.GetCurrentDirectory(); var configBuilder = new ConfigurationBuilder() .SetBasePath(curPath) .AddJsonFile("appsettings.json", optional: true); var config = configBuilder.Build(); r4mdbManager = new Route4MeDbManager(config); _route4meDbContext = r4mdbManager.Route4MeContext; }
static void Main(string[] args) { // Specify here a database provider var dbProvider = DatabaseProviders.PostgreSql; var curPath = Directory.GetCurrentDirectory(); var configBuilder = new ConfigurationBuilder() .SetBasePath(curPath) .AddJsonFile("appsettings.json", optional: true); var config = configBuilder.Build(); Route4MeDbManager.DatabaseProvider = dbProvider; var r4mdbManager = new Route4MeDbManager(config); _route4meDbContext = r4mdbManager.Route4MeContext; //Specify here the parameters for appropriate DB enigne var optBuilder = new DbContextOptionsBuilder <Route4MeDbContext>(); switch (dbProvider) { case DatabaseProviders.LocalDb: optBuilder.UseSqlServer(config.GetConnectionString("DefaultConnection")); break; case DatabaseProviders.Sqlexpress: optBuilder.UseSqlServer(config.GetConnectionString("SqlExpressConnection")); break; case DatabaseProviders.MySql: optBuilder.UseMySql(config.GetConnectionString("MySqlConnection")); break; case DatabaseProviders.SQLite: optBuilder.UseSqlite(config.GetConnectionString("SQLiteConnection")); break; case DatabaseProviders.PostgreSql: optBuilder.UseNpgsql(config.GetConnectionString("PostgreSqlConnection")); break; case DatabaseProviders.BigQuery: optBuilder.UseNpgsql(config.GetConnectionString("PostgreSqlConnection")); break; } var services = new ServiceCollection() .AddLogging().AddSingleton <DbContextOptions>(optBuilder.Options) .AddOptions() .AddDbContext <Route4MeDbContext>() .BuildServiceProvider(); if ((_route4meDbContext.Database.GetService <IDatabaseCreator>() as RelationalDatabaseCreator).Exists()) { _route4meDbContext.Database.EnsureDeleted(); } _route4meDbContext.Database.EnsureCreated(); if (dbProvider == DatabaseProviders.MySql) { string command = @"CREATE TABLE `__EFMigrationsHistory` ( `MigrationId` nvarchar(150) NOT NULL, `ProductVersion` nvarchar(32) NOT NULL, PRIMARY KEY (`MigrationId`) );"; _route4meDbContext.Database.ExecuteSqlCommandAsync(command).Wait(); } IApplicationBuilder app = new ApplicationBuilder(services); // See results with Sql Studio --- server name: (LocalDB)\MSSQLLocalDB r4mdbManager.MigrateDatabase(app); var contact = (new Program()).CreateContact(); Task.Run(async() => { await _route4meDbContext.SaveChangesAsync(); }); _route4meDbContext.Update <AddressBookContact>(contact.Result); }