подставить пароль в строку подключения

224
17 июня 2018, 11:20

Есть приложение WinForms + entity-framework + MS SQL. Если задать всю строку подключения в app.config или если задать всю строку подключения в коде, то все работает.

class UserContext : DbContext
{
    public UserContext()
        : base("DBConnection")
    {
        Database.Connection.ConnectionString = "data source=server;Initial Catalog=test;Persist Security Info=True;User ID=test;Password=12345678";
    }
    public DbSet<User> Users { get; set; }
}

Но мне нужно взять строку подключения из app.config (в которой удален пароль) и в коде UserContext подставить пароль. Похожий ответ здесь, но не до конца понял, как подставить.

Для чего - чтобы совсем в открытом виде не хранить пароль (разбирать программу никто не будет, но в конфиге в открытом виде тоже храниться не хочется)

Дополнения после первого ответа: это строка в app.config

<add name="DBConnection" connectionString="data source=server;Initial Catalog=test;Persist Security Info=True;User ID={0};Password={1}"

так я выполнил добавление пароля в коде

base.Database.Connection.ConnectionString = string.Format(Database.Connection.ConnectionString, "test", "12345678");

такая получилось строка при наведении во время остановки Database.Connection.ConnectionString

 "data source=server;Initial Catalog=test;Persist Security Info=True;User ID=test;Password=12345678"  

Создал пустое приложение. Есть только класс

    public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

Контекст

    class UserContext : DbContext
{
    public UserContext()
        : base("DBConnection")
    {
        Database.Connection.ConnectionString = string.Format(Database.Connection.ConnectionString, "test", "12345678");
    }
    public DbSet<User> Users { get; set; }
}

И кнопка, где идет считывание таблицы

        private void button1_Click(object sender, EventArgs e)
    {
        using (UserContext db = new UserContext())
        {
            var users = db.Users.ToList();
        }
    }    

Как я понимаю: если в app.config есть строка подключения, то он берет её. Если её нет, то берет из Database.Connection.ConnectionString.

Answer 1
Database.Connection.ConnectionString = 
  string.Format("Password={0};data source=server;Initial Catalog=test;Persist Security Info=True;User ID=test", 
    "12345678");
READ ALSO
Выполнение функции в .NET forms

Выполнение функции в .NET forms

Хочу выполнить функцию DevicesDetect(), я знаю, что объявил её неверноWindows Forms не позволяет добавить модификаторы private или public к этой функции

198
Исключение в конструкторе класса c#

Исключение в конструкторе класса c#

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

190
Рандом картинок в picturebox без повторений с#(WF)

Рандом картинок в picturebox без повторений с#(WF)

очень надеюсь на вашу помощьНа форме 8 picturebox загружаю в них картинки рандомно :

204
Сохранить отчет из базы данных с помощью FastReport

Сохранить отчет из базы данных с помощью FastReport

У меня есть база данных к которой я подключаюсь с помощью OleDbConnection(файл Microsoft Access, не спрашивайте почему, задание в универе такое дали)Нужно...

214