Enterprise Library 2.0 技巧(2):如何將配置信息保存到數據庫中
摘要:使用過Enterprise Library的朋友可能都知道,所有的配置信息都是放在了配置文件里面(應用程序配置文件或者外部配置文件),大家有沒有想過把配置信息保存到數據庫中呢?
主要內容
1.編譯SqlConfiguration
2.創建數據表和存儲過程
3.配置應用程序
4.使用應用程序塊
使用過Enterprise Library的朋友可能都知道,所有的配置信息都是放在了配置文件里面(應用程序配置文件或者外部配置文件),大家有沒有想過把配置信息保存到數據庫中呢?在Enterprise Library用ConfigurationSource替代了Configuration Application Block,看一下ConfigurationSource的結構圖:

EL默認的是System Configuration Source,關于如何使用File Configuration Source,在技巧(1)里面已經說過了,下面我們具體看一下使用Sql Configuration Source。
1.編譯SqlConfiguration
在安裝目錄的QuickStarts文件夾里面,編譯后拷貝如下文件到bin目錄中
Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.dll
Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.Design.dll
Microsoft.Practices.EnterpriseLibrary.ConfigurationSource.SQL.XML
Interop.MSDASC.dll2.創建數據表和存儲過程
運行CreateSqlConfiguration.cmd,注意在這之前可能要先用記事本打開SqlConfiguration.sql文件,另存為Unicode格式,如下圖:
默認將安裝在Northwind數據庫中,安裝完成后數據庫中有一張Configuration_Parameter表和四個相關的存儲過程。
3.配置應用程序
經過了上面兩步之后,就可以開始配置應用程序了。新建一個項目,添加App.config,使用EntLibConfig.exe打開,在新建Configuration Source的時候,會發現菜單中多了一項Sql Configuration Source:
選擇之后,出現如下界面,這時需要設置Sql Configuration Source的參數,如下圖所示設置存儲過程名稱:
設置完成后,在Configuration Source的SelectedSource節點選中Sql Configuration Source:
這里為了測試,新建一個Logging Application Block。(當有Data Access Application Block時保存總會報錯,不知道是什么問題?)保存后會在數據庫中多出一條記錄:
4.使用應用程序塊
當配置完成后,看看App.config配置文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<enterpriseLibrary.ConfigurationSource selectedSource="Sql Configuration Source">
<sources>
<add name="Sql Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.SqlConfigurationSource, Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
connectionString="Password=19811218;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=RJ-097"
getStoredProcedure="EntLib_GetConfig" setStoredProcedure="EntLib_SetConfig"
refreshStoredProcedure="UpdateSectionDate" removeStoredProcedure="EntLib_RemoveSection" />
<add name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</sources>
</enterpriseLibrary.ConfigurationSource>
</configuration>編寫一個簡單的日志應用程序:
class Program
{
static void Main(string[] args)
{
LogEntry log = new LogEntry();
log.Message = "This is a test!";
Logger.Write(log);
}
}運行程序后,在trace.log中記錄了這樣的一條日志信息:
----------------------------------------
General Information: 0 : Timestamp: 2006-7-4 8:02:05
Message: This is a test!
Category: General
Priority: -1
EventId: 0
Severity: Information
Title:
Machine: RJ-097
App Domain: EntLibDemo1.vshost.exe
ProcessId: 5896
Process Name: D:\Visual Studio2005 Project\EntLibDemo1\EntLibDemo1\bin\Debug\EntLibDemo1.vshost.exe
Thread Name: 
Win32 ThreadId:4304
Extended Properties: 
----------------------------------------我們就可以把配置信息保存到了SQL Server數據庫中,也許有人覺得這個技巧不存在什么實際意義,但是特殊情況下,當你需要這樣實現的時候,別忘了這篇Post。
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com



浙公網安備 33010602011771號