【问题标题】:Pass dynamic connection string to perform DB operation using EF 6传递动态连接字符串以使用 EF 6 执行 DB 操作
【发布时间】:2018-07-10 06:01:42
【问题描述】:

我创建了一个 Web API 并使用 Entity Framework 6 进行 DB 操作,我有以下逻辑从 DB 获取数据。

<connectionStrings><add name="DB" connectionString="server=DESKTOP-DB; uid=sa;pwd=111111;database=EmpDB;" providerName="System.Data.SqlClient" /></connectionStrings>

public void SaveData(string data1, long data2){
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Microsoft.Practices.EnterpriseLibrary.Data.Database db = factory.Create("DB");
DbCommand dbCommand = db.GetStoredProcCommand("EmpSave");
using (DbConnection connection = db.CreateConnection())
{
    DbTransaction trans = null;
    try
    {
        trans = connection.BeginTransaction();
        db.AddInParameter(dbCommand, "@EMPID", DbType.Int64, data2);
        db.AddInParameter(dbCommand, "@name", DbType.String, data1);
        db.ExecuteNonQuery(dbCommand, trans);
        trans.Commit();
    }
    catch (Exception ex)
    {
        trans.Rollback();
        throw ex;
    }
    finally
    {
        trans.Dispose();
        connection.Close();
    }
}
}

现在我想使用动态连接字符串进行 DB 操作,意味着在请求中我将收到一个参数,根据参数值我将从 DB/XML 检索连接字符串并在 DB 操作中使用相同的字符串,因此将存储数据基于请求中收到的参数值。

关于如何使用上述逻辑实现这一点的任何想法?

【问题讨论】:

    标签: c# asp.net-web-api entity-framework-6


    【解决方案1】:

    假设您的连接字符串在 app.config 中,名称为“DB”。 您可以使用以下方法:

    if(parameter1)
    { 
       string connString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
    }
    

    【讨论】:

    • 感谢您的快速响应,我已经在 App.config 中配置了默认连接字符串,但我想将其更改为根据参数值对每个请求使用另一个 DB 运行时。例如Param = 1 然后我想使用 Connection string = ABC,对于 Param = 2 然后我想使用 Connection string = XYZ。
    • 如果您想在app.config中维护多个连接字符串,您可以使用上面的代码通过在上面的代码中传递“连接字符串名称”来获取所需的连接字符串。如果您想使用单个连接字符串并根据参数进行修改,也可以使用上面的代码。这不起作用吗?
    • 您可以在从 app.config 读取连接字符串后在运行时替换这些凭据,而不是在 App.config 中硬编码 DB 凭据。
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2022-09-28
    相关资源
    最近更新 更多