需要帮助为 SQL Server CE 数据库创建“另存为”方法

本文关键字:另存为 创建 方法 数据库 CE 帮助 SQL Server | 更新日期: 2023-09-27 18:32:33

我有一个数据库,我已经轻松地实现了Save和Load方法,但是在尝试使用C#创建另存为方法时遇到了一些麻烦。当我尝试以这种方式保存更改时,它不会创建新文件,它只是不执行任何操作或覆盖我的原始文件,即使我给它起了一个新名称。

总而言之,我想打开一个.sdf文件,对其进行一些更改,然后使用新名称保存它。我该怎么做?

猜我试图让它变得比现在更容易 - 我对编程数据库相当陌生,所以任何提示将不胜感激。

谢谢!

这是我的另存为方法:

public static bool SaveDataAs(string fileName)
{
   thisdb.dbFileName = Path.GetFileName(fileName);
   thisdb.dbFilePath = Path.GetDirectoryName(fileName);
   thisdb.connect();
   thisdb.SaveChanges();
   return true;
}

这是我的连接方法:

public void connect()
{
   string dbConnection = "Data Source=" + dbFilePath + "''" + dbFileName;
   if (!Directory.Exists(dbFilePath)) { 
      Directory.CreateDirectory(dbFilePath); 
   }
   string dbProvider = "System.Data.SqlServerCe.4.0";
   Database.DefaultConnectionFactory =
            new System.Data.Entity.Infrastructure.SqlCeConnectionFactory(
                                     dbProvider, dbFilePath, dbConnection);
}

需要帮助为 SQL Server CE 数据库创建“另存为”方法

您混合了两种截然不同的职责:保存数据和文件管理。我会开始将两者分开。

让有一个管理数据库文件并了解其位置的组件。让另一个组件(数据访问层 (DAL((将数据保存到它从文件管理器接收的数据库文件中。代码可能如下所示:

public Repository GetRepository(string fileName)
{
   var man = new DbFileManager();
   string dbFilePath = man.GetFile(fileName);
   return new Repository(dbFilePath); // TODO: Check dbFilePath
}

DbFileManager 知道原始数据库文件,并负责将副本复制到所需位置。它返回与新文件通信的存储库。

存储库接收新位置的名称,生成连接字符串并使用它初始化上下文。然后,您可以在存储库上调用任意数量的读取和保存操作。

我不确定这是否满足您的要求。如果您还想修改原始文件,则可以在完成更新后让文件管理器用副本覆盖它。这样,如果出现错误,将始终有一个原始文件要返回。