2009-09-22 65 views
1

上午使用MVC和亚音速3.0.0.3,但我似乎无法针对多个数据库连接的特定点。亚音速3.0.0.3多个数据库连接故障转移

通常在正常的.NET我有我的2串在web.config文件 ,并有一个数据库类为我的项目,该DB类中,我会做这样的事情:

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

我我试图在亚音速创建的文件中找到一个地方,在这样的地方最好放置这些文件,并且可能会提供一个关于如何实现它的最新示例。我已经使用Google等,但显示的例子是一个较旧的亚音速。

千恩万谢

+0

我可以只添加,我已经看到亚音速页面说,我可以扩展我所有的代码连接字符串,但我希望实际上在模型类中捕获此.....我创建了provider2和DataProvider2但不知道在哪里接受它,int()on context.cs似乎只是使用提供者来创建一切,我在ExcecuteTransaction中看到一个connection.open,但我很努力地知道连接在哪里或如何工作。 谢谢 – davethecoder 2009-09-25 07:56:19

回答

1

如果您在Context.tt在第35行看看,你会看到下面的代码:

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打开。

+0

是的,那是我要去哪里,好东西谢谢 – davethecoder 2009-09-28 09:07:13

+0

var myconn = DataProvider.CreateConnection(); myconn.Close(); 涵盖了try块中成功尝试的结束 – davethecoder 2009-09-28 09:13:45

相关问题