设置connectionstring实体框架

时间:2011-12-28 16:10:01

标签: .net entity-framework sql-server-ce-4 sdf

我已经构建了一个使用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();
        }
        }
    }
}

2 个答案:

答案 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(这会对你有帮助)