2010-04-06 93 views
3

我正在开发一个类库(C#),我将其用于我的不同项目(稍后)。我的类库dll将使用项目的连接字符串/数据上下文来引用我的新dll。我该怎么做?
假设我有一个名为“CLP”的类库项目和一个网站项目“WP”。我可以添加对CLP.dll文件的引用,但是我将如何将连接字符串/数据上下文对象传递给该dll?因为CLP.dll将根据“WP”的连接字符串访问数据库。共享连接字符串

不知道我的问题是否清楚!

回答

1

如果你开发你的类库,并且只要你调用它的项目在它的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”项目。

希望这会有所帮助。

+0

这样我就会绑定在所有其他项目上使用相同的连接字符串名称,这会添加对“CPL”的引用。没有任何通用的方式,我可以轻松地将连接字符串名称传递给“CPL”dll? – coure2011 2010-04-06 12:06:21

+0

总而言之,请参阅@ SlackerCoder的回应。该参数将是您想要从配置部分查找的连接字符串配置设置键:-) – WestDiscGolf 2010-04-06 12:59:34

+1

想一想;您可以通过@SlackerCoder建议的方式进行构建,也可以以工厂模式编写数据访问DLL。如果你想真正被带走,你可以使它有一个流体界面,并有注入点以帮助进行单元测试。只是抛出一些想法。 – WestDiscGolf 2010-04-06 13:05:16

0

只是为了增加对@ 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返回类型为样本,如果你有一个回报,只需更换它。我不知道你的项目,所以我不想做假设你将如何使用连接!