连接字符串:从配置文件转换为代码

时间:2016-03-19 16:41:26

标签: c# entity-framework connection-string

我在使用我的主应用程序和类库中的Entity Framework连接字符串时遇到了一些麻烦。我的主应用程序(* .exe)和我的类库(我想用于Excel的COM * .dll)都需要创建与SQL Server CE数据库或SQL Server数据库的连接。

目前,我在配置文件中定义了两个“基本”连接字符串,一个用于SQL Server CE实现,另一个用于SQL Server实现。这适用于我的主应用程序,因为它从配置文件(SQL Server CE或SQL Server)中读取相应的“基本”连接字符串,我调整连接字符串值(例如,通过'data source ='为SQL提供文件位置)服务器CE或SQL Server的数据库名称),我很高兴。但是这对我的类库不起作用,因为配置文件取决于使用该库的应用程序。因此,我想通过在代码中定义我的连接字符串而不是在配置文件中完全摆脱我的配置文件依赖。

当前配置文件配置如下所示:

<add name="ConnectionCE" providerName="System.Data.SqlServerCe.4.0" connectionString="" />

<add name="ConnectionServer" providerName="System.Data.SqlClient" connectionString="" />

然后我按如下方式创建上下文:

var context = new DbContext("name=ConnectionCE")
//Do things with the context above here, e.g. change the connection string value.

如何转换“ConnectionCE”和“ConnectionServer”连接字符串,以便我不必依赖配置文件,并且可以直接在我的C#代码中创建这些代码(使用正确的提供程序)?

谢谢!

1 个答案:

答案 0 :(得分:2)

System.Data.SqlClient.SqlConnectionStringBuilder构造函数接受名称或连接字符串。

您可以在代码中构建连接字符串并将其传递给构造函数。

您可以使用string.Format()类为SQL Server构建连接字符串。我认为,对于SQL Server CE连接字符串,它很容易使用var connStr = new SqlConnectionStringBuilder { InitialCatalog = "YourDb", IntegratedSecurity = true, DataSource = @".\SQLServer", }; var db = new DbContext(connStr.ConnectionString);

SQL Server的代码如下所示:

var conn = DbProviderFactories.GetFactory("System.Data.SqlServerCe.4.0").CreateConnection();
conn.ConnectionString = "DataSource = \"C:\\ExistingDBFile.db\"";
var db = new DbContext(conn, true);

应为SQL Server CE指定提供程序,因此代码如下所示:

printf("CONGRATULATIONS!!\nYou won with %d turn%s remaining.\n", 
  turns, 
  turns==1 ?"" :"s");