我正在开发一个类库(C#),我将其用于我的不同项目(稍后)。我的类库dll将使用项目的连接字符串/数据上下文来引用我的新dll。我该怎么做?
假设我有一个名为“CLP”的类库项目和一个网站项目“WP”。我可以添加对CLP.dll文件的引用,但是我将如何将连接字符串/数据上下文对象传递给该dll?因为CLP.dll将根据“WP”的连接字符串访问数据库。共享连接字符串
不知道我的问题是否清楚!
我正在开发一个类库(C#),我将其用于我的不同项目(稍后)。我的类库dll将使用项目的连接字符串/数据上下文来引用我的新dll。我该怎么做?
假设我有一个名为“CLP”的类库项目和一个网站项目“WP”。我可以添加对CLP.dll文件的引用,但是我将如何将连接字符串/数据上下文对象传递给该dll?因为CLP.dll将根据“WP”的连接字符串访问数据库。共享连接字符串
不知道我的问题是否清楚!
如果你开发你的类库,并且只要你调用它的项目在它的web/app配置文件“ConnectionString”中有一个连接字符串,它就需要一个名为“ConnectionString”的连接字符串,那么它应该没问题。
所以使用你的项目名称。你的“中电”类项目,在将设置您的数据访问代码使用字符串“的ConnectionString”连接:
_serverConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
,然后你对那个连接代码。
在你的web项目(“WP”)的web.config文件中添加以下内容:
<connectionStrings><add name="ConnectionString" connectionString="Data Source=.\SQL2008;Integrated Security=True" providerName="System.Data.SqlClient" /></connectionStrings>
显然指向的数据源等您正在使用的“WP”项目。
希望这会有所帮助。
只是为了增加对@ WestDiscGolf的回答是:
您也可以使用参数从配置文件中的ConnectionString的名称传递(所以你不要总是用“的ConnectionString”)。
例如:在你的DLL类,你可以有:
public void buildConnection(string sConnectionString){
//Some code, variables, etc
_serverConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[sConnectionString]);
//Some more code, etc etc
}
,并调用它:
buildConnection("MyConnectionStringNameInTheConfigFile");
**注:我用void返回类型为样本,如果你有一个回报,只需更换它。我不知道你的项目,所以我不想做假设你将如何使用连接!
这样我就会绑定在所有其他项目上使用相同的连接字符串名称,这会添加对“CPL”的引用。没有任何通用的方式,我可以轻松地将连接字符串名称传递给“CPL”dll? – coure2011 2010-04-06 12:06:21
总而言之,请参阅@ SlackerCoder的回应。该参数将是您想要从配置部分查找的连接字符串配置设置键:-) – WestDiscGolf 2010-04-06 12:59:34
想一想;您可以通过@SlackerCoder建议的方式进行构建,也可以以工厂模式编写数据访问DLL。如果你想真正被带走,你可以使它有一个流体界面,并有注入点以帮助进行单元测试。只是抛出一些想法。 – WestDiscGolf 2010-04-06 13:05:16