簡體   English   中英

需要協助為SQL Server CE數據庫創建“另存為”方法

[英]Need assistance creating “Save As” method for SQL Server CE database

我有一個數據庫,並且已經輕松實現了Save&Load方法,但是在嘗試使用C#創建Save As方法時遇到了一些麻煩。 當我嘗試以這種方式保存所做的更改時,它將不會創建新文件,它什么也不做,或者即使我給它起了新的名字,它也會覆蓋我的原始文件。

總結一下,我想打開一個.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);
}

您要混合兩個非常不同的職責:保存數據和文件管理。 我將把兩者分開。

有了一個管理數據庫文件並知道其位置的組件。 讓另一個組件,即數據訪問層(DAL),將數據保存到從文件管理器接收的數據庫文件中。 該代碼可能類似於:

public Repository GetRepository(string fileName)
{
   var man = new DbFileManager();
   string dbFilePath = man.GetFile(fileName);

   return new Repository(dbFilePath); // TODO: Check dbFilePath
}

DbFileManager知道原始數據庫文件,並負責將其復制到所需的位置。 它返回一個與新文件進行通信的存儲庫。

存儲庫接收新位置的名稱,構建連接字符串並使用它初始化上下文。 然后,您可以在存儲庫上調用任意數量的讀取和保存操作。

我不確定這是否滿足您的要求。 如果您還想修改原始文件,則可以讓文件管理器在完成更新后用副本覆蓋它。 這樣,在出現錯誤的情況下,總會有一個原始文件可以返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM