我有一个使用相同连接字符串的多个项目的解决方案。我可以使用这些字符串为每个项目添加一个配置文件,但是想知道是否有办法为整个解决方案添加一个可由其中的所有单个项目访问的配置文件?
答案 0 :(得分:5)
不要将配置文件添加到每个项目,而是使用Add as Link,这样只有一个文件的副本,所有项目都在访问。
基本上你是在添加地址而不是文件本身,这意味着对地址文件的任何更改都会影响从地址读取的所有项目。
答案 1 :(得分:2)
在第一个项目中创建一次配置。
然后是所有其他项目,添加现有项目,但点击添加按钮上的箭头,然后点击添加为链接。
一个文件将在您的项目中共享。
答案 2 :(得分:0)
我相信你只需要'Startup'项目中的配置文件。
我有一个包含多个项目的解决方案,所有项目都使用启动项目中单个配置文件中的相同连接字符串。
或者,您可以创建自己的配置文件,所有项目都可以访问(不使用.net配置文件)
答案 3 :(得分:0)
如果你有一个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();
}
}
这在解决方案级别一直对我有用。