0

データに SQL Server Compact 4.0 (.sdf) を使用するアプリケーションを構築しました。その後、ユーザーは .sdf ファイルをアプリケーションに保存およびロードできるようになります。空の .sdf ファイルを作成するメソッドを構築できました。しかし、私の App.Config には、定義済みの .sdf (Entity Framework) への接続文字列があります。ユーザーが .sdf ファイルをロードできるようにする必要がある場合は、新しく作成された .sdf ファイルに対して機能するように app.config ファイルの接続文字列を設定する必要があります。

新しい .sdf ファイルに対して動作するように Entity Framework を動的に設定するにはどうすればよいですか?

これは、これまでのところ 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

entityconnectionbuilder を使用する必要があります。

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

注:新しいデータベースには、古いデータベースと同じスキーマが必要です

実行時に Entity Framework 4 で SQL CE ファイルを開く(これは役に立ちます)

于 2011-12-28T16:21:47.550 に答える