Скрытие App.config в ресурсах - PullRequest
3 голосов
/ 03 марта 2012

Я некоторое время искал, но просто не могу найти конкретный ответ для этого.

В моем текущем проекте на C # у меня есть файл App.config, который мне нужен для того, чтобы мой контекст EDM мог найти соединение с базой данных.

Мне нужно, чтобы мое приложение состояло из одного файла .exe, но из-за App.config оно сгенерирует файл .exe.config рядом с моим файлом .exe и потребует его для правильной работы.

Есть ли способ добавить строку подключения для моего контекста БД программным путем или возможно сохранить App.config в ресурсах?

Как передать строку подключения в контекст моей базы данных?

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

В конце концов, последний комментарий Амен Аяч указал мне на правильное решение

вместо создания экземпляра моего ObjectContext без параметров, мне просто нужно было передать строку подключения из моего App.config, и я смог удалить App.config

Вместо

Entities = new MyEntities();

я позвонил

Entities = new MyEntities( "metadata=res://*/Models.csdl|res://*/Models.ssdl|res://*/Models.msl;provider=System.Data.SqlClient;provider connection string=\"data source=sql-server;initial catalog=initialDatabase;integrated security=True;pooling=False;multipleactiveresultsets=True;App=EntityFramework\"" );

Visual Studio автоматически перегружает конструктор создаваемого им класса контекста, позволяя вам передать строку подключения вручную

0 голосов
/ 03 марта 2012

Вы можете сохранить и прочитать настройки, как и все расширенные программы в Реестр , и забыть app.config, и вот как это сделать:

public object GetRegistryValue(string KeyName, object DefaultValue)
        {
            object res = null;
            try
            {
                Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer();
                Microsoft.Win32.RegistryKey k = c.Registry.CurrentUser.OpenSubKey("Software\\YourAppName", true);
                if (k != null)
                {
                    res = k.GetValue(KeyName, DefaultValue);
                }
                else
                {
                    k = c.Registry.CurrentUser.CreateSubKey("Software\\YourAppName");
                }
                if (k != null)
                    k.Close();
                // ex As Exception
            }
            catch
            {
                //PromptMsg(ex)
            }
            return res;
        }

public void SetRegistryValue(string KeyName, object _Value)
        {
            try
            {
                Microsoft.VisualBasic.Devices.Computer c = new Microsoft.VisualBasic.Devices.Computer();

                Microsoft.Win32.RegistryKey k = c.Registry.CurrentUser.OpenSubKey("Software\\YourAppName", true);
                if (k != null)
                {
                    k.SetValue(KeyName, _Value);
                }
                else
                {
                    k = c.Registry.CurrentUser.CreateSubKey("Software\\YourAppName");
                    k.SetValue(KeyName, _Value);
                }
                if (k != null)
                    k.Close();
                // ex As Exception
            }
            catch
            {
                //PromptMsg(ex)
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...