/// <summary> /// :: Important :: /// Aim: Update DB to latest version using currentDBVersion variable. /// /// Working: /// Just like migrations in Rails. /// Each case in the switch has changes in that specific DB version /// default case implies latest version and so no changes /// At the end of each case we add goto to next case to fall through until we reach the latest version /// /// Notes: /// Target version will always be 'one' version higher than the current one. Increments in DB versions is always by 1 /// All the changes to schema from the targetVersion will be run /// </summary> private void UpdateDB() { using (var db = new MedicineContext(App.DbConnection)) { var adapter = db.CreateDatabaseSchemaUpdater(); switch (GetNextDBVersion(adapter.DatabaseSchemaVersion)) { case 0: // Version 0. Initial DB goto case 1; case 1: // Version 1 changes // New Columns adapter.AddColumn<Medicine>("IsUsing"); adapter.AddColumn<Medicine>("Quantity"); adapter.AddColumn<Medicine>("QuantityType"); adapter.AddColumn<Medicine>("ReminderIds"); adapter.AddColumn<Medicine>("DosageType"); // New Tables adapter.AddTable<Group>(); adapter.AddTable<Medicine_Group>(); goto default; default: // DB upto date break; } adapter.DatabaseSchemaVersion = currentDBVersion; adapter.Execute(); } }
/// <summary> /// Creates the Medicines Catalogue DB if it doesn't exist /// Adds a sample medicine /// </summary> private void CreateDB() { using (var db = new MedicineContext(DbConnection)) { if (!db.DatabaseExists()) { db.CreateDatabase(); InsertSampleData(db); db.SubmitChanges(); var adapter = db.CreateDatabaseSchemaUpdater(); adapter.DatabaseSchemaVersion = currentDBVersion; adapter.Execute(); } } }