Пример #1
0
        private void btnDuplicate_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            var result = MessageBox.Show(MainService.MainWindow, "Se va a realizar una copia del archivo de base de datos.\nSi el archivo de base de datos tiene transacciones sin apuntar estas pueden no estar disponibles en el archivo duplicado.\n\n¿Desea apuntar todas las transacciones pendientes antes de copiar el archivo de base de datos?",
                                         "Apunte de transacciones pendientes", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

            if (result == MessageBoxResult.Yes)
            {
                DbConnection.LiteDatabase.Checkpoint();
            }
            else if (result == MessageBoxResult.Cancel)
            {
                return;
            }


            var            dbPath = DbConnection.ConnectionData.Filename;
            SaveFileDialog sfd    = new SaveFileDialog();

            sfd.CheckFileExists  = false;
            sfd.CheckPathExists  = true;
            sfd.InitialDirectory = Path.GetDirectoryName(dbPath);
            sfd.Title            = "Selección de la ubicación de la copia";

            if (sfd.ShowDialog().Value)
            {
                try
                {
                    DbConnection.LiteDatabase.Dispose();

                    File.Copy(dbPath, sfd.FileName);

                    result = MessageBox.Show(MainService.MainWindow, "El archivo de base de datos se ha copiado correctamente.\n\n¿Desea conectar a la nueva base de datos?",
                                             "Copia terminada", MessageBoxButton.YesNo, MessageBoxImage.Question);

                    if (result == MessageBoxResult.Yes)
                    {
                        var currConnStr             = DbConnection.ConnectionData;
                        ConnectionString connString = new ConnectionString();
                        connString.Collation   = (currConnStr.Collation != null)? new Collation(currConnStr.Collation.LCID, currConnStr.Collation.SortOptions) : null;
                        connString.Connection  = currConnStr.Connection;
                        connString.Filename    = sfd.FileName;
                        connString.InitialSize = currConnStr.InitialSize;
                        connString.Password    = currConnStr.Password;
                        connString.ReadOnly    = currConnStr.ReadOnly;
                        connString.Upgrade     = currConnStr.Upgrade;

                        MainService.AddNewConnection(connString);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(MainService.MainWindow, "Se ha producido un error: \n\n" + ex.Message,
                                    "Error durante la copia de la base de datos", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    DbConnection.LiteDatabase = new LiteDatabase(DbConnection.ConnectionData);
                }
            }
        }
Пример #2
0
 private void AddNewConnection(ConnectionString conndata)
 {
     MainService.AddNewConnection(conndata);
 }