如何在C#中在运行时设置Entity Framework连接字符串密码?

时间:2018-05-24 03:26:50

标签: c# entity-framework entity-framework-6

如何在运行时传递ADO.NET实体数据模型密码?在搜索问题,论坛,博客后我无法解决这个问题。我从数据库中选择代码优先,我想连接到现有的.SDF数据库文件。

app.config中定义连接和名称时,我选择不将敏感密码存储到配置文件中。正如我在一些教程中看到的那样,他们不建议在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>,它会引发异常:

  

底层提供程序在Open上失败。指定的密码与数据库密码不匹配。 [数据源= AppConfig.sdf]

0 个答案:

没有答案