我有一个解决方案,其中包含多个将使用相同的连接字符串的项目。我可以使用这些字符串向每个项目添加一个配置文件,但想知道是否有办法为整个解决方案添加一个可供其中所有单个项目访问的配置文件?
不要将配置文件添加到每个项目,而是使用"添加为链接",以便所有项目都只能访问该文件的一个副本。
本质上,您添加的是地址而不是文件本身,这意味着对地址处文件的任何更改都将影响从该地址读取的所有项目。
在第一个项目中创建一次配置。
然后,所有其他项目,添加现有项目,但点击"添加"按钮上的箭头并改为添加为链接。
一个文件将在您的项目之间共享。
你只需要"启动"项目中的配置文件。
我有一个包含多个项目的解决方案,其中所有项目都使用启动项目中单个配置文件中的相同连接字符串。
或者,您可以创建自己的配置文件,所有项目都可以访问该文件(不使用 .NET 配置文件)
根据解决方案中的项目(如果您有 MVC/UI 项目),则可以使用该项目中的 web.config 并在同一解决方案中的其他项目中引用它。
样本:
MVC 项目中的 Web.config
:<configuration>
...
<connectionStrings>
<add name="name1" connectionString="Data Source=HOSTNAME_DB_INSTANCE;Initial Catalog=DB_NAME;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="name2" connectionString="Data Source=HOSTNAME_DB_INSTANCE;Initial Catalog=DB_NAME;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="name3" connectionString="Data Source=HOSTNAME_DB_INSTANCE;Initial Catalog=DB_NAME;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
...
</configuration>
在另一个项目/类库中
public List<Products> GetProducts()
{
using (var multi = new SqlConnection(ConfigurationManager.ConnectionStrings["name1"].ConnectionString).QueryMultiple("SPROC NAME", commandType: CommandType.StoredProcedure))
{
return multi.Read<Products>().ToList();
}
}
这在解决方案级别一直对我有用。