首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止Visual 2015在项目加载时连接到每个连接字符串?

如何停止Visual 2015在项目加载时连接到每个连接字符串?
EN

Stack Overflow用户
提问于 2015-09-23 15:36:29
回答 1查看 1.5K关注 0票数 9

当尝试打开包含大量连接字符串的解决方案时,Visual 2015将在加载项目时尝试连接到每个解决方案。

我们团队中的每个开发人员在开发期间都使用Server的本地实例。这个实例可以有我们的主数据库的多个副本,其中包括不同级别的迁移--我们是一个很小的团队,所以常常在中途切换任务。

为此,我们有许多特定于机器的连接字符串,在创建DbContext时,我们使用机器名称来确定要使用哪个连接字符串:

代码语言:javascript
复制
<connectionStrings>
  <!-- Steve -->
  <add name="MachineConnection_LT4" providerName="System.Data.SqlClient"
       connectionString="Data Source=LT4\SQL2012;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />

  <!-- Sean -->
  <add name="MachineConnection_DESKTOP-UQV58RL" providerName="System.Data.SqlClient"
       connectionString="Data Source=DESKTOP-UQV58RL\SQLEXPRESS;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />

  <!-- Sarah -->
  <add name="MachineConnection_Dev-3" providerName="System.Data.SqlClient"
       connectionString="Data Source=Dev-3\;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />

  <!-- Graham -->
  <add name="MachineConnection_lt5" providerName="System.Data.SqlClient"
       connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
  <add name="MachineConnection_graham-surface3" providerName="System.Data.SqlClient"
       connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />
  <add name="MachineConnection_graham-pc-10" providerName="System.Data.SqlClient"
       connectionString="Data Source=.;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />

  <!-- Alex -->
  <add name="MachineConnection_Dev9" providerName="System.Data.SqlClient"
       connectionString="Data Source=Dev9;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx;MultipleActiveResultSets=True" />

  <!-- Reuben -->
  <add name="MachineConnection_ReubenPC" providerName="System.Data.SqlClient"
       connectionString="Data Source=REUBENPC\SQLEXPRESS;Initial Catalog=xxx;Integrated Security=True;MultipleActiveResultSets=True" />

</connectionStrings>

然后我们的上下文初始化如下:

代码语言:javascript
复制
public class TTDataContext : DbContext
{
    public const string CacheKey = "dbContext";

    public TTDataContext()
        : base(SqlConnections.GetConnectionStringName())
    {
    }

    ...

}

并利用它来帮助:

代码语言:javascript
复制
public class SqlConnections
{
    private const string DefaultConnectionStringName = "DefaultConnection";

    /// <summary>
    /// Get the name of the connection string to use.
    /// This attempts to find a machine-specific connection string e.g. MachineConnection_LT4, and falls back to
    /// the default connection string if a machine-specific connection string is not found
    /// </summary>
    /// <returns></returns>
    public static string GetConnectionStringName()
    {
        // This enables a connection string to be completely overridden in the cloud service configuration
        try
        {
            var cloudConnectionString = CloudConfigurationManager.GetSetting("TTDatabaseConnectionString");
            if (!String.IsNullOrEmpty(cloudConnectionString)) return cloudConnectionString;
        }
        catch
        {
            // Deliberately empty - an exception will be thrown if not running on AppFabric
        }

        string machineSpecificConnectionStringName = string.Format("MachineConnection_{0}", Environment.MachineName);
        string connectionString = ConfigurationManager.ConnectionStrings[machineSpecificConnectionStringName] == null
                   ? DefaultConnectionStringName
                   : machineSpecificConnectionStringName;
        return connectionString;
    }
}

当Visual Studio 2015加载项目时(在初始情况下或在更改Git分支时),它尝试建立到列表中指定的每个连接字符串的连接(通过删除其中的所有连接字符串来确认),并且由于它们都是每个相关机器的本地连接,因此它停止响应,直到连接超时,引发此错误:

2013没有这个设置的问题。是否有办法说服Visual 2015以同样的方式行事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-23 17:30:21

这是由一个扩展引起的--特别是Karma (版本1.1.3),它似乎会在项目加载上自动运行一些代码。

禁用此扩展程序解决了问题。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32743827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档