2011-08-23 176 views
3

我有一個城堡核心的問題,我試圖注入兩個不同的數據庫連接到特定的存儲庫。Castle Windsor問題

public class Repository1 { 
    public Repository1(System.Data.Common.DbConnection conn) { } 
} 
public class Repository2 { 
    public Repository2(System.Data.Common.DbConnection conn) { } 
} 

現在,例如IM想注入MySQL連接到Repository1和Oracle連接repository2。

回答

5

事情是這樣的:

container.Register(Component 
    .For<DbConnection>() 
    .ImplementedBy<MysqlConnection>() 
    .Named("mysql")); 
container.Register(Component 
    .For<DbConnection>() 
    .ImplementedBy<OracleConnection>() 
    .Named("oracle")); 

container.Register(Component 
    .For<Repository1>() 
    .ServiceOverrides(new { conn = "mysql" })); 
container.Register(Component 
    .For<Repository2>() 
    .ServiceOverrides(new { conn = "oracle" })); 

您可能需要調整的DbConnection註冊,因爲我不知道確切的類名可能是什麼,或者他們是否需要其他配置設置。

+0

當連接具有相同類型(即mysqlconnection)但它們根據配置(connectionString)而不同時應該怎麼做。在這種情況下,windsor將首先聲明連接。 –

+0

使用DependsOn方法爲它們中的每一個提供不同的連接字符串。 –

+0

我必須在容器中註冊連接字符串嗎? –