Example #1
0
        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;
        }
Example #3
0
        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);
        }