亚音速3.0.0.3多数据库连接故障转移

时间:2009-09-22 10:57:54

标签: asp.net asp.net-mvc subsonic subsonic3

我正在使用MVC和Subsonic 3.0.0.3,但我似乎无法确定多个数据库连接的特定点。

通常在正常.net中我会在web.config文件中有我的2个字符串 并且我的项目有一个数据库类,在这个db类中我会做这样的事情:

try
        {
            conn.ConnectionString = server1;
            conn.Open();
        }
        catch (MySqlException)
        {
            conn.ConnectionString = server2;
            conn.Open();
        }

我试图确定亚音速创建文件中的一个位置,这样的地方最好放置,也许是一个如何实现它的最新示例。我用google搜索等,但显示的例子是用于较老的亚音速。

非常感谢

1 个答案:

答案 0 :(得分:1)

如果您在第35行查看Context.tt,您将看到以下代码:

public <#=DatabaseName#>DB() 
{ 
    DataProvider = ProviderFactory.GetProvider("<#=ConnectionStringName#>");
    Init();
}

这是提供商为您设置的地方,因此如果您在第20行的ConnectionStringName之后的Settings.ttinclude中添加BackupConnectionStringName变量,那么您应该能够检查您的连接是否正常工作,如果没有,则可以使用您的备用。例如:

public <#=DatabaseName#>DB() 
{ 
    DataProvider = ProviderFactory.GetProvider("<#=ConnectionStringName#>");
    Init();
    try
    {
        DataProvider.CreateConnection();
    }
    catch(SqlException)
    {
       DataProvider = ProviderFactory.GetProvider("<#=BackupConnectionStringName#>");
       Init(); 
    }
}

注意:您可能需要进行一些清理以确保CreateConnection不会保持连接处于打开状态。