如何从另一个项目访问连接字符串

时间:2011-06-06 08:42:54

标签: c# .net connection-string

我在Visual Studio 2010中的解决方案中有两个项目 项目1包含app.config ConnectionString

如何从Project 2访问ConnectionString

由于他们都使用相同的ConnectionString,我宁愿在我的解决方案中只有一个实例。

5 个答案:

答案 0 :(得分:5)

您可以add the files as a link将文件发送到您的某个项目。

Add an Existing Item用于要添加文件的项目 - Open按钮有一个小的向下箭头,如果点击它,您可以选择Add as Link

这会将文件添加为原始位置的链接,这意味着您只有一个物理文件。

答案 1 :(得分:3)

另一个想法是使用像Ninject这样的IoC容器,将连接字符串注入到您需要的类的构造函数中。这与工厂模式不同。

  

注意:您不需要使用Entity Framework来使用Ninject。

看这篇文章: Ninject - binding constructors with arguments / Entity Framework connection string

答案 2 :(得分:1)

除了Oded的答案中建议的文件链接之外,您可以考虑重构您的应用程序以使用包含DatabaseConnectionFactory类等的commom数据访问程序集。该程序集将在其设置中包含连接字符串

答案 3 :(得分:0)

如果您只想分享特定部分(在您的情况下为connectionStrings),那么链接将不适合您。相反,你可以做this之类的事情:

The solution is to store the connection strings on the web.config of the parent web app. 
Note that the web site root is also an app, so you can store a web.config in there (i.e. c:\inetpub\wwwroot\web.config) which will be inherited by all apps under it.
c:\inetpub\wwwroot\web.config -> common configuration. 
c:\inetpub\wwwroot\app1\web.config -> configuration for app1
c:\inetpub\wwwroot\app2\web.config -> configuration for app2. 

In the case the default web site root is off limits, you can create a root app to contain all other apps and store the common configuration there. 
c:\inetpub\wwwroot\myrootapp\web.config-> common configuration. c:\inetpub\wwwroot\myrootapp\app1\web.config -> configuration for app1 c:\inetpub\wwwroot\myrootapp\app2\web.config -> configuration for app2.

答案 4 :(得分:-1)

如果您的Project 2具有Project 1的引用,则Project1可能具有暴露ConnectionString属性的类。

顺便说一下,“class”可以从app.config

中读取连接字符串