2011-12-28 38 views
0

我已經構建了一個使用SQL Server Compact 4.0(.sdf)作爲數據的應用程序。 用戶應該能夠將.sdf文件保存並加載到應用程序中。 我已經能夠建立一個方法來創建一個空的.sdf文件。但我的App.Config有一個到預定義的.sdf(實體框架)的連接字符串。如果用戶應該能夠加載.sdf文件,我需要將app.config文件的連接字符串設置爲針對新創建的.sdf文件。設置連接字符串實體框架

如何動態設置實體框架以對抗我的新.sdf文件?

這是我創建sdf的類的代碼。在此之後,用戶應該能夠選擇對哪些文件進行處理。我如何設置?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Data.SqlServerCe; 
using System.Configuration; 
using GLL.Properties; 

namespace GLL 
{ 
public partial class LoadDatabaseForm : Form 
{ 
    public LoadDatabaseForm() 
    { 
     InitializeComponent(); 
    } 

    private void buttonNew_Click(object sender, EventArgs e) 
    { 
     createDatabase(); 
     setConnectionString(); 
    } 

    private void setConnectionString() 
    { 
     ConnectionStringSettings str =  System.Configuration.ConfigurationManager.ConnectionStrings["GLLDBEntities"]; 
     MessageBox.Show(str.ConnectionString); 




    } 

    private void createDatabase() 
    { 
     string connStr = "Data Source = FooDatabase.sdf; Password = SomePassword"; 

     if (File.Exists("FooDatabase.sdf")) 
      File.Delete("FooDatabase.sdf"); 

     SqlCeEngine engine = new SqlCeEngine(connStr); 
     engine.CreateDatabase(); 

     SqlCeConnection conn = null; 


     try 
     { 
      conn = new SqlCeConnection(connStr); 

      conn.Open(); 

      SqlCeCommand cmd = conn.CreateCommand(); 
      cmd.CommandText = "CREATE TABLE FooTable(col1 int, col2 ntext)"; 
      cmd.ExecuteNonQuery(); 
     } 
     catch 
     { 

     } 
     finally 
     { 

      conn.Close(); 
     } 
     } 
    } 
} 

回答

1

好的,所以我聽到的是你需要能夠在App.config文件中靈活地設置連接字符串。好的是它是一個關鍵的價值對。以下是如何更改App.Config中的值的示例:

// Open App.Config of executable 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
// Add an Application Setting. 
config.AppSettings.Settings.Remove("ConnectionString"); 
config.AppSettings.Settings.Add("ConnectionString", "Data Source = FooDatabase.sdf; Password = SomePassword"); 
// Save the configuration file. 
config.Save(ConfigurationSaveMode.Modified); 

// Force a reload of a changed section. 
ConfigurationManager.RefreshSection("appSettings"); 

這只是一個示例。以下是有關如何執行此操作的更多信息:http://chiragrdarji.wordpress.com/2008/09/25/how-to-change-appconfig-file-run-time-using-c/