Как установить пароль строки подключения Entity Framework во время выполнения в C #? - PullRequest
0 голосов
/ 24 мая 2018

Как передать пароль модели данных объекта ADO.NET во время выполнения?Я не могу разобраться после поиска вопроса, форума, блога.Я выбираю code-first из базы данных, которую я хочу подключить к существующему файлу базы данных .SDF.

При определении соединения и имени в app.config я решил не хранить конфиденциальный пароль в файле конфигурации.Как я вижу в некоторых уроках, они не советуют хранить пароль в конфигурации.

Как передать пароль во время выполнения после SetData?У меня есть 3 базы данных в одной папке.Я добавил все 3 базы данных в EF.

Просто учусь использовать великолепную технику EF.Нужен совет.

EF настроен в приложении WPF.

App.config

<connectionStrings>
    <add name="AppUI" 
         connectionString="Data Source=|DataDirectory|AppUI.sdf" 
         providerName="System.Data.SqlServerCe.4.0" />
    <add name="AppSystem" 
         connectionString="Data Source=|DataDirectory|AppSystem.sdf" 
         providerName="System.Data.SqlServerCe.4.0" />
    <add name="AppConfig" 
         connectionString="Data Source=|DataDirectory|AppConfig.sdf"  
         providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Я установил каталог данных на Application_Startup:

AppDomain.CurrentDomain.SetData("DataDirectory", GlobVars.strLogStartPath + "Database");

Основной класс EF

public partial class AppConfig : DbContext
{
    public AppConfig()
        : base("name=AppConfig")
    {
    }

    public AppConfig(string ConnectionString)
        : base(ConnectionString)
    {
    }

    public virtual DbSet<HardwareConfig> HardwareConfigs { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}

Я получаю значение из базы данных конфигурации

using (var context = new AppConfig())
{
    IQueryable<HardwareConfig> qTable = from t in context.HardwareConfigs
                                        select t;

    foreach (var t in qTable)
    {
        string devicename = t.Model;
    }
}

В настоящее время проблема возникает в IQueryable<HardwareConfig>, где выдается исключение:

Базовый поставщик не удалось открыть.Указанный пароль не совпадает с паролем базы данных.[Источник данных = AppConfig.sdf]

...