【问题标题】:Set connectionstring Entity Framework设置连接字符串实体框架
【发布时间】:2011-12-28 16:10:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案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/

    【讨论】:

      【解决方案2】:

      你必须使用 entityconnectionbuilder。

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

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

      Opening an SQL CE file at runtime with Entity Framework 4(这会对你有所帮助)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多