private bool UpgradeDatabase(FileInfo path) { var previousStorageType = StorageType; try { StorageType = "SQLite"; var oldFilename = path.FullName; var newFilename = Path.ChangeExtension(oldFilename, DatabaseSuffix); var newFile = new DirectoryInfo(newFilename); if (!oldFilename.Equals(newFilename) && newFile.Exists) { var msg = String.Format("Cannot move {0} to {1}, {2} already exists, returning false...", oldFilename, newFilename, newFilename); Log.To.Upgrade.W(TAG, msg); return(false); } var name = Path.GetFileNameWithoutExtension(Path.Combine(path.DirectoryName, newFilename)); var db = GetDatabase(name, false); if (db == null) { Log.To.Upgrade.W(TAG, "Upgrade failed for {0} (Creating new DB failed), returning false...", path.Name); return(false); } db.Dispose(); var upgrader = Database.CreateUpgrader(db, oldFilename); try { upgrader.Import(); } catch (CouchbaseLiteException e) { Log.To.Upgrade.W(TAG, "Upgrade failed for {0} (Status {1}), aborting...", path.Name, e.CBLStatus); upgrader.Backout(); return(false); } Log.To.Upgrade.I(TAG, "...Success!"); return(true); } finally { StorageType = previousStorageType; } }