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

摘要:使用过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目录中

Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.dll

Microsoft.Practices.EnterpriseLibrary.SqlConfigurationSource.Design.dll

Microsoft.Practices.EnterpriseLibrary.ConfigurationSource.SQL.XML

Interop.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配置文件:

<?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。

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

posted on 2006-07-05 15:13 TerryLee 阅读(5512) 评论(15)  编辑 收藏 所属分类: Enterprise Library.NET Framework

评论

#1楼  2006-07-05 15:31 SHY520      

好!顶   回复  引用  查看    

#2楼  2006-07-05 15:37 新东 [未注册用户]

好!又见您的一篇佳作了。一定要支持一下!   回复  引用    

#3楼  2006-07-05 15:39 新东 [未注册用户]

我想问一下啊,您上面的那个ConfigurationSource的结构图是用什么软件画的啊,挺养眼的   回复  引用    

#4楼 [楼主] 2006-07-05 15:39 TerryLee      

@SHY520

谢谢:-)

EL2.0中还有很多值得可研究的东西   回复  引用  查看    

#5楼 [楼主] 2006-07-05 15:41 TerryLee      

@新东

谢谢支持:-)

用的是Visio画的,只是设置了一下渐变效果   回复  引用  查看    

#6楼  2006-07-05 15:53 SHY520      

@TerryLee
是啊,我现在刚到新公司,没太多时间,呵呵   回复  引用  查看    

#7楼 [楼主] 2006-07-05 16:08 TerryLee      

@SHY520

呵呵,刚到公司是得努力工作   回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-07-08 13:05 编辑过
 
另存  打印
 


导航

公告

  • 网名:TerryLee
  • 本名:李会军
  • 位置:中国北京 Ethos
  • 联系方式:
  • 访问我的个人主页

 MVP配置

 个人主页

 版权声明

  • 本站采用创作共用许可 署名,非商业

绿色通道

IT新闻

统计

与我联系

留言簿(323)

我的标签

随笔分类

随笔档案

个人站点

关注项目

好的网站

我的好友

搜索

积分与排名

阅读排行榜

评论排行榜