我在Visual Studio 2010中的解决方案中有两个项目
项目1包含app.config
ConnectionString
。
如何从Project 2访问ConnectionString
?
由于他们都使用相同的ConnectionString
,我宁愿在我的解决方案中只有一个实例。
答案 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
中读取连接字符串