博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Enterprise Library 2.0 技巧(2):如何将配置信息保存到数据库中
阅读量:7232 次
发布时间:2019-06-29

本文共 3416 字,大约阅读时间需要 11 分钟。

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

主要内容
1
.编译SqlConfiguration
2
.创建数据表和存储过程
3
.配置应用程序
4
.使用应用程序块
 
使用过Enterprise Library的朋友可能都知道,所有的配置信息都是放在了配置文件里面(应用程序配置文件或者外部配置文件),大家有没有想过把配置信息保存到数据库中呢?在Enterprise LibraryConfigurationSource替代了Configuration Application Block,看一下ConfigurationSource的结构图:
 
EL
默认的是System Configuration Source,关于如何使用File Configuration Source,在里面已经说过了,下面我们具体看一下使用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.gif
{
InBlock.gif
InBlock.gif    
static void Main(string[] args)
InBlock.gif
ExpandedSubBlockStart.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。
本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67626
,如需转载请自行联系原作者
你可能感兴趣的文章
Linux top命令
查看>>
Ogre2.0 全新功能打造新3D引擎
查看>>
Yii2发送邮箱总结
查看>>
Jedis操作Redis
查看>>
第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态...
查看>>
caddy server 几个常用插件
查看>>
Linux工具之man手册彩色页设置
查看>>
android_浅析canvas的save()和restore()方法
查看>>
浅谈DDD
查看>>
在使用springMVC时,我使用了@Service这样的注解,发现使用注解@Transactional声明的事务不起作用...
查看>>
Servlet入门(第一个Servlet的Web程序)
查看>>
Android学习笔记进阶18 之画图并保存图片到本地
查看>>
安装wxWidgets遭遇的两大关卡
查看>>
MapReduce实战(六)共同粉丝
查看>>
Java 实现单链表反序
查看>>
移植alsa-lib遇到的问题
查看>>
镜像的缓存特性 - 每天5分钟玩转 Docker 容器技术(14)
查看>>
[Node.js]多进程
查看>>
面试归来,感觉无望,下次再战
查看>>
C#之值类型和引用类型
查看>>