Как передать пароль модели данных объекта 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]