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();
        }
        }
    }
}
4

2 回答 2

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/

于 2011-12-28T16:21:46.660 回答
0

您必须使用实体连接构建器。

http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnectionstringbuilder.aspx

注意:您的新数据库必须与旧数据库具有相同的架构

使用 Entity Framework 4 在运行时打开 SQL CE 文件(这将对您有所帮助)

于 2011-12-28T16:21:47.550 回答