2012-12-17 29 views
0

我有一個wpf應用程序先由實體框架代碼備份。該應用程序允許用戶創建新數據庫並使用wpf屏幕對其進行處理。首先在Entity Framework代碼中創建新的數據庫非常簡單,並且不是問題。但是,我正在努力尋找一種體面的方式,將特定的wpf客戶端與他正在開發的當前數據庫相關聯。數據庫連接字符串的構造如下。存儲WPF中多個SQL Server數據庫的連接字符串信息

providerConnectionString = "Server=" + serverName + ";" + "Database=" + databaseName + 
      "; User Id = userId; Password = password; Persist Security Info=True;"; 

正如你可以在上面看到我的時候,客戶端啓動WPF應用程序到客戶端計算機上的某個地方存儲服務器,數據庫名稱,用戶名和密碼,以便正確的數據庫可以撿起來使用。爲了增加一些複雜性,如果用戶希望使用wpf應用程序,用戶可以從一個數據庫切換到另一個數據庫。在這種情況下,我將不得不重置上述四個連接字符串參數以指向新的數據庫。

我不想爲WPF應用程序提供任何密碼保護。上面所寫的一切只適用於SQL Server數據庫連接字符串。

總之,在wpf應用程序中可以動態添加新數據庫的情況下,如何爲特定的wpf客戶端存儲sql服務器連接字符串信息的最佳方式是什麼。

回答

0

如何在代碼中存儲默認連接,然後允許用戶更改WPF應用程序中的連接詳細信息,然後將其存儲在獨立存儲中。因此,連接將是每個WPF客戶端用戶。或者,如果您必須在第一個實例中設置此項,請檢查登錄的用戶,然後查找數據庫連接信息,然後將其存儲在獨立存儲中以便隨後從代碼訪問。

e.g添加一個鍵值對,這個對象

IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly(); 


Dictionary<string,string> dict = new Dictionary<string,string>(); 

添加到您的字典...

IsolatedStorageFile isoStore = 
      IsolatedStorageFile.GetStore(IsolatedStorageScope.User 
      | IsolatedStorageScope.Assembly, null, null); 
     Stream stream = new 
      IsolatedStorageFileStream(someFileName, 
      FileMode.Create, isoStore); 

     if (stream != null) 
     { 
      try 
      { 
       // Serialize the object into the IsolatedStorage. 
       IFormatter formatter = new BinaryFormatter(); 
       formatter.Serialize(stream, (Dictionary)dict); 
      } 
      finally 
      { 
       stream.Close(); 
      } 
     } 
+0

這當然看起來很有希望。這裏唯一的問題是IsolatedStorage沒有Add(key,value)選項可用,這意味着我必須使用標準的IO類型API來存儲和更新連接字符串參數。 – Jatin

+0

爲什麼不創建一個字典/哈希表,添加到它,然後序列化。請參閱編輯 –

+0

是的,我想過這些可能性,我認爲,而不是使用字典,我會創建一個單獨的類存儲連接字符串參數,然後序列化/根據需要反序列化到IsolatedStorageFile。謝謝 – Jatin

相關問題