Установить структуру соединения Entity Framework - PullRequest
0 голосов
/ 28 декабря 2011

Я создал приложение, которое использует SQL Server Compact 4.0 (.sdf) для данных. Затем пользователь должен иметь возможность сохранять и загружать файлы .sdf в приложение. Я был в состоянии построить метод, который создает пустой файл .sdf. но мой App.Config имеет строку подключения к предопределенному .sdf (Entity Framework). Если пользователь должен иметь возможность загрузить файл .sdf, мне нужно установить строку подключения файла app.config для работы с вновь созданным файлом .sdf.

Как мне динамически настроить Entity Framework для работы с моим новым файлом .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 ]

1 голос
/ 28 декабря 2011

Хорошо, так что я слышал, что вы должны иметь возможность установить строку соединения в файле 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/

0 голосов
/ 28 декабря 2011

Вы должны использовать entityconnectionbuilder.

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

Примечание. Новая база данных должна иметь ту же схему, что и старая

Открытие файла SQL CEво время выполнения с Entity Framework 4 (это поможет вам)

...