c# - WPF - 如何以编程方式备份​​/恢复 LocalDB - ClickOnce

标签 c# sql wpf entity-framework clickonce

我有一个应用程序,它使用 EF 和 LocalDB 作为其数据库,由 ClickOnce 发布。 这是我第一次使用 LocalDB,我不知道如何向我的应用程序添加一个功能来以编程方式备份​​/恢复数据库。

ClickOnce 安装的我的应用路径:

C:\Users\Mahdi Rashidi\AppData\Local\Apps\2.0\NOL11TLW.9XG\CZM702AQ.LPP\basu..tion_939730333fb6fcc8_0001.0002_fd707bbb3c97f8d3

这是安装数据库文件的位置:

C:\Users\Mahdi Rashidi\AppData\Local\Apps\2.0\NOL11TLW.9XG\CZM702AQ.LPP\basu...exe_939730333fb6fcc8_0001.0002_none_8c555c3966727e7f
  1. 我应该如何备份/恢复数据库?
  2. 如何保护数据库免受 ClickOnce 进一步更新的影响?

非常感谢:)

最佳答案

这是我备份和恢复我的 localDb 所做的

public void BackupDatabase(string filePath)
    {
        using (TVend2014Entities dbEntities = new TVend2014Entities(BaseData.ConnectionString))
        {
            string backupQuery = @"BACKUP DATABASE ""{0}"" TO DISK = N'{1}'";
            backupQuery = string.Format(backupQuery, "full databsase file path like C:\tempDb.mdf", filePath);
            dbEntities.Database.SqlQuery<object>(backupQuery).ToList().FirstOrDefault();
        }
    }

    public void RestoreDatabase(string filePath)
    {
        using (TVend2014Entities dbEntities = new TVend2014Entities(BaseData.ConnectionString))
        {
            string restoreQuery = @"USE [Master]; 
                                                ALTER DATABASE ""{0}"" SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
                                                RESTORE DATABASE ""{0}"" FROM DISK='{1}' WITH REPLACE;
                                                ALTER DATABASE ""{0}"" SET MULTI_USER;";
            restoreQuery = string.Format(restoreQuery, "full db file path", filePath);
            var list = dbEntities.Database.SqlQuery<object>(restoreQuery).ToList();
            var resut = list.FirstOrDefault();
        }
    }

希望这就是你想要的。

关于c# - WPF - 如何以编程方式备份​​/恢复 LocalDB - ClickOnce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25966891/

相关文章:

c# - c# 中 uint 的位移位

c# - HttpWebRequest .GetResponse 抛出 WebException 'The operation has timed out'

c# - 我可以使用 Reactive Extensions 进行独立订阅/发布吗?

mysql - 连接两个表时如何避免重复值?

c# - XAML 菜单项可见但不可选择?

c# - 用于 C# 应用程序的图形拖放式设计器库?

sql - 我可以按多个列排序并以某种方式保持 MySQL 中列之间的排序相关吗?

php - foreach循环中的Joomla Mysql查询

c# - 从 wpf 资源绑定(bind)文本 block 文本

c# - 填充 DataGrid : how to manipulate data before showing it on C# MySQL