Enterprise Library 2.0 技巧(2):如何将配置信息保存到数据库中

本文介绍如何使用SqlConfigurationSource替代默认的SystemConfigurationSource,将EnterpriseLibrary的配置信息保存到SQL Server数据库中,包括编译SqlConfiguration组件、创建数据库表和存储过程、配置应用程序以及使用应用程序块。
摘要由CSDN通过智能技术生成

摘要:使用过Enterprise Library的朋友可能都知道,所有的配置信息都是放在了配置文件里面(应用程序配置文件或者外部配置文件),大家有没有想过把配置信息保存到数据库中呢?

主要内容

1.编译SqlConfiguration

2.创建数据表和存储过程

3.配置应用程序

4.使用应用程序块

 

使用过Enterprise Library的朋友可能都知道,所有的配置信息都是放在了配置文件里面(应用程序配置文件或者外部配置文件),大家有没有想过把配置信息保存到数据库中呢?在Enterprise LibraryConfigurationSource替代了Configuration Application Block,看一下ConfigurationSource的结构图:

 

EL默认的是System Configuration Source,关于如何使用File Configuration Source,在技巧(1里面已经说过了,下面我们具体看一下使用Sql Configuration Source

1.编译SqlConfiguration

在安装目录的QuickStarts文件夹里面,编译后拷贝如下文件到bin目录中

None.gif Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.dll
None.gif
None.gifMicrosoft.Practices.EnterpriseLibrary.SqlConfigurationSource.Design.dll
None.gif
None.gifMicrosoft.Practices.EnterpriseLibrary.ConfigurationSource.SQL.XML
None.gif
None.gifInterop.MSDASC.dll

2.创建数据表和存储过程

运行CreateSqlConfiguration.cmd,注意在这之前可能要先用记事本打开SqlConfiguration.sql文件,另存为Unicode格式,如下图:

默认将安装在Northwind数据库中,安装完成后数据库中有一张Configuration_Parameter表和四个相关的存储过程。

3.配置应用程序

经过了上面两步之后,就可以开始配置应用程序了。新建一个项目,添加App.config,使用EntLibConfig.exe打开,在新建Configuration Source的时候,会发现菜单中多了一项Sql Configuration Source

选择之后,出现如下界面,这时需要设置Sql Configuration Source的参数,如下图所示设置存储过程名称:

设置完成后,在Configuration SourceSelectedSource节点选中Sql Configuration Source

这里为了测试,新建一个Logging Application Block。(当有Data Access Application Block时保存总会报错,不知道是什么问题?)保存后会在数据库中多出一条记录:

4.使用应用程序块

当配置完成后,看看App.config配置文件:

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
None.gif
< configuration >
None.gif
None.gif  
< configSections >
None.gif
None.gif    
< section  name ="enterpriseLibrary.ConfigurationSource"  type ="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif
None.gif  
</ configSections >
None.gif
None.gif  
< enterpriseLibrary .ConfigurationSource selectedSource ="Sql Configuration Source" >
None.gif
None.gif    
< sources >
None.gif
None.gif      
< add  name ="Sql Configuration Source"  type ="Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.SqlConfigurationSource, Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
None.gif
None.gif        connectionString
="Password=19811218;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=RJ-097"
None.gif
None.gif        getStoredProcedure
="EntLib_GetConfig"  setStoredProcedure ="EntLib_SetConfig"
None.gif
None.gif        refreshStoredProcedure
="UpdateSectionDate"  removeStoredProcedure ="EntLib_RemoveSection"   />
None.gif
None.gif      
< 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"   />
None.gif
None.gif    
</ sources >
None.gif
None.gif  
</ enterpriseLibrary.ConfigurationSource >
None.gif
None.gif
</ configuration >

编写一个简单的日志应用程序:

None.gif class  Program
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif
InBlock.gif    
static void Main(string[] args)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        LogEntry log 
= new LogEntry();
InBlock.gif
InBlock.gif        log.Message 
= "This is a test!";
InBlock.gif
InBlock.gif        Logger.Write(log);
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}

运行程序后,在trace.log中记录了这样的一条日志信息:

None.gif ----------------------------------------
None.gif
None.gifGeneral Information: 0 : Timestamp: 2006-7-4 8:02:05
None.gif
None.gifMessage: This is a test!
None.gif
None.gifCategory: General
None.gif
None.gifPriority: -1
None.gif
None.gifEventId: 0
None.gif
None.gifSeverity: Information
None.gif
None.gifTitle:
None.gif
None.gifMachine: RJ-097
None.gif
None.gifApp Domain: EntLibDemo1.vshost.exe
None.gif
None.gifProcessId: 5896
None.gif
None.gifProcess Name: D:\Visual Studio2005 Project\EntLibDemo1\EntLibDemo1\bin\Debug\EntLibDemo1.vshost.exe
None.gif
None.gifThread Name: 
None.gif
None.gifWin32 ThreadId:4304
None.gif
None.gifExtended Properties: 
None.gif
None.gif----------------------------------------

我们就可以把配置信息保存到了SQL Server数据库中,也许有人觉得这个技巧不存在什么实际意义,但是特殊情况下,当你需要这样实现的时候,别忘了这篇Post。

转载于:https://www.cnblogs.com/raymond19840709/archive/2006/09/06/495869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值