Castle学习笔记----ActiveRecord配置封装的解决方案

使用ActiveRecord开发的过程中我想大家都想到过,配置那么多要是不Ctrl+C/Ctrl+V还得自己去记在脑袋里,必然杂弄?

无论你是使用Hashtable,ArrayList等集合对象来处理还是使用web.config类配置或是使用XML文件单独配置,始终你都得记住或是让你的硬盘帮你记住ActiveRecord的配置串.方便你Ctrl+C/Ctrl+V.

[使用集合对象处理]

Hashtable properties = new Hashtable();
properties.Add("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("hibernate.dialect", "NHibernate.Dialect.MsSql2000Dialect");
properties.Ad("hibernate.connection.provider","NHibernate.Connection.DriverConnectionProvider");
properties.Add("hibernate.connection.connection_string", "Data Source=.;
Initial Catalog=test;Integrated Security=SSPI");
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
source.Add(typeof(ActiveRecordBase), properties);

[使用xml配置节]

<activerecord>
<config>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="hibernate.connection.connection_string"
value="Data Source=.;Initial Catalog=test;Integrated Security=SSPI" />
</config>
</activerecord>

使用上面这两种方式是不是都很麻烦,上周我在公司做项目的时候想到去写一个通用方法来处理ActiveRecord,个人觉得很不错,把思想写下来大家分享.

解决方案分析

针对这种情况,我的思路是把配置用方法封装起来,通过传递数据库名和项目实体数据程序集给方法,具体的实现交给方法封装方法去搞定,如下示:

因为Castle所支持的不只是MSSQL这一种数据库,MYSQL,DB2.......也支持,既然是通用方法,那考虑这一点是必要的.这里我采用了工厂模式,定义抽象类和抽象方法,让派生类来实现他,通过工厂根据需要调用不同的实现类方法:

1public abstract class Initialize
2{
3 public abstract void ActiveRecordInit(string dataBase,string model);
4}

时间: 2025-01-11 13:05:40

Castle学习笔记----ActiveRecord配置封装的解决方案的相关文章

Javascript学习笔记9 prototype封装继承_基础知识

好,那就让我们一步步打造,首先让我们来看下继承原本的写法: 复制代码 代码如下: <script> var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.SayHello = function () { alert(this.name + "," + this.age); }; var Programmer = function (name, age,

Castle.ActiveRecord的初始化配置补充及配置封装的解决方案

前些天我发了一篇关于AR的配置的文章,是我帮一位刚学习AR的朋友做了一个小实例后写上来的,里面我采用了IConfigurationSource,ActiveRecord是在web.config里配置的,其实ActiveRecord可以单独写在别的地方或动态配置也是可以的,比如用XML来配置,用Hashtable来配置.下面我简单介绍了怎么配置. 一.用XML配置,通过XmlConfigurationSource来获取配置信息,AppConfig.xml,详细配置请看下面xml数据 1<?xml

Castle学习笔记----Castle.AvtiveRecord配置

一.安装程序 castleproject-1.0-rc2.msi(下载安装就好!). 二.修改Web.Config的配置 Web.Config里需在节点<configSections>下添加配置 <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" /> 上

Castle学习笔记----认识Castle.AvtiveRecord

Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务. ActiveRecord提供的简洁的O/R映射 ActiveRecord是Castle中提供的一个数据访问框架,它在底层封装了NHibernate的操作,使用特性来代替映射文件,它提供的简洁的O/R映射会让你惊叹原来实现持久化数据层是那么简单. 一.首先建立实体类并完对数据库的映射 namespa

Castle学习笔记----初探IOC容器

Windsor是Castle 的一个IOC容器.它构建于MicroKernel之上,功能非常之强大,能检测类并了解使用这些类时需要什么参数,检测类型和类型之间工作依赖性,并提供服务或者发生错误时提供预警的机制. 通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并告诉容器所注册的服务由那一个类来实现他.通常建立容器我们可以用以下定义来实现: 1IWindsor

Castle学习笔记----使用HQL语句实现复杂查询

在ActiveRecord中实现稍微复杂的一点的查询,我们就不能用使用Find(id),FindAll()这两个静态的方法了,这时就需要使用HQL语句来实现,在平常使用Castle的时候我想大家都注意到在ActiveRecordBase类下,由于只提供了Find(id),FindAll()这样两个静态的查询方法,这两个方法在我们查询中还远远不够,仍然不能解决实际开发中一些复杂的查询,这方面ActiveRecord为我们提供了HQL语言的支持. 一.HQL语句介绍 HQL全名是Hibernate

Castle学习笔记----将Castle IOC引入项目开发中实现“依赖注入”

通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件.这篇文章还是以这四个环节来阐述. 一.建立容器 这里我拿手上的一个现成项目来做分析,首先我们得建立IOC容器.项目中是建立了一个容器类Container来专门负责IOC容器的搭建及组件的加入.代码如下: 1using System; 2using System.Collections.Generic; 3using System.Text; 4 5using Castle.Windsor; 6using

Laravel 5.3 学习笔记之 配置_php技巧

1.简介 Laravel 的所有配置文件都存放在 config 目录下,每个配置项都有注释,以保证浏览任意配置文件的配置项都能直观了解该配置项的作用及用法. 2.访问配置值 你可以使用全局辅助函数 config 在应用的任意位置访问配置值,该配置值可以文件名+"."+配置项的方式进行访问,当配置项没有被配置的时候返回默认值: $value = config('app.timezone'); 如果要在运行时设置配置值,传递数组参数到 config 方法即可: config(['app.t

java中学习笔记(环境配置、Hello World)

一.java开发环境的安装与配置 1.下载JDK. 2.安装JDK.注意在安装时安装路径中不要有空格,例如安装路径为:D:Javajdk1.6.0_30. 3.设置环境变量.可以是用户变量,也可以是系统变量.主要设置内容有:JAVA_HOME.PATH.CLASSPATH,如果没有则新建,如果有就编辑. JAVA_HOME=D:Javajdk1.6.0_30 JAVA_HOME指明JDK的安装路径,此路径下包括lib.bin.jre等文件夹.由于JAVA_HOME变量需要被引用,因此该值末尾不应