[英]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.