2014-02-20 52 views
1

我使用Quartz .net和AdoJobStore作業庫。在config文件,還有用來設置連接字符串的屬性:石英.net配置代碼而不是配置文件

<add key="quartz.dataSource.default.connectionString" value="Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=True" /> 

不過,我管理一個單獨的配置文件中的所有我的連接字符串,所以我現在需要dupplicate此的ConnectionString信息。

有沒有辦法在.config文件中不指定quartz.dataSource.default.connectionString並通過代碼手動設置它,所以我可以在我的全局connectionStrings配置文件中獲取我的值?

它在實例化StdSchedulerFactory時可能使用NameValueCollection,但我不想管理所有設置,只有連接字符串。

回答

0

最後解決我的問題,通過傳遞全部配置屬性使用代碼,但通過解析石英配置自動獲取它們。

我手動添加quartz.dataSource.default.connectionString屬性在最後,並通過獲取它在我的全局connectionStrings.config文件中設置值。

1

最後,它們都是簡單的命名 - 值對。

您可以將它們中的「大部分」放在.xml文件中,然後通過代碼「添加」您想要的。

或者讓他們都在代碼中。

查看UnitTests的源代碼,你會看得很清楚。

事情是這樣的:

NameValueCollection config = (NameValueCollection)ConfigurationManager.GetSection("quartz"); 

    config.Add("MyCodedUpKey", "MyCodedUpValue"); 

我不會把

「quartz.dataSource.default.connectionString」

在你的.xml文件...以避免碰撞.. ...或者您可以編寫額外的邏輯來刪除並添加到NameValueCollection的 。

或者這裏偷看:

Check if Key Exists in NameValueCollection

+1

這很容易避免NameValueCollection中的碰撞。只需使用'config.Set(「MyCodedUpKey」,「MyCodedUpValue」)',如果密鑰存在,它將替換那裏的值,或者如果密鑰不存在則添加值。 – saluce

+0

你是對的! http://msdn.microsoft.com/en-us/library/system.collections.specialized.namevaluecollection.set%28v=vs.110%29.aspx – granadaCoder