我已经构建了一个使用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();
}
}
}
}
答案 0 :(得分: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/
答案 1 :(得分:0)
你必须使用entityconnectionbuilder。
http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnectionstringbuilder.aspx
注意:新数据库必须具有与旧数据库相同的模式
Opening an SQL CE file at runtime with Entity Framework 4(这会对你有帮助)