Castle.ActiveRecord
空闲下来了,回想当时没有完成的任务,Castle的学习就是其中一项.
在网上找了许多的资料,其中Terrylee老师的算是比较经典的.打算看一点做一点,一步一步的走~遇到的问题写出来,供大家参考讨论.
Castleproject.Org官网上FAQ里就"What is Castle Project?"说道:"An umbrella for projects that share the same goal: boost productivity while promoting good code and good design. ".对~good code and good design,为了这个CODE和DESIGN,我们来一点一点的挖掘Castle里的秘密吧.
第一部分,紧跟Terrylee老师的步伐,我先开始通过Castle.ActiveRecord了解Castle.
开始,先跟大家说一下, Castle.ActiveRecord是Castle中提供的一个数据访问框架,它在底层封装了NHibernate的操作,使用特性来代替映射文件,这样咱们就不必再去为编写.hbm.xml文件而费心了(虽然有了代码生成器).
教程用例将直接套用Terrylee老师的教程用例,并在里面添加上我的一些相应经历,请大家谅解(自己编写例子真的很烦啊,呵呵)
练习数据表Users:
第二部分,实体类的编码.
2
3
4
5
6
7
8
9
首先我们来看代码前端类声明的部分:
[ActiveRecord("Users")]
public class UserEntity : ActiveRecordBase
UserEntity类继承于ActiveRecordBase,并且为UserEntity类添加了[ActiveRecord("Users")]的特性,意指UserEntity所对应的数据库表为Users.
然后再来看属性定义部分:
[PrimaryKey(PrimaryKeyType.Identity, "LogonID")]
public int Id
{
get { return _id; }
set { _id = value; }
}
Id这个属性返回值为INT类型,并且为它添加了一个[PrimaryKey(PrimaryKeyType.Identity, "LogonID")]的特性,意指Id所对应的数据库表字段为LogonID,主键且为自增类型.
注:如果属性名和字段名一致,[Property()]中可为空.
最后,就练习中写到的几个静态方法向大家说明一下:
从ActiveRecordBase里可以直接继承到一些最基本的方法,比如:Create(),Update(),Delete(),Save()及相应扩展方法.
咱们通过这些基本的方法,对Users这个表可以进行INSERT,UPDATE,SELECT操作,以达到练习的目的.
在执行这些方法前,需要对ActiveRecord进行数据库配置,在这里,我只介绍一种方法,也是最常用的方法:配置文件.
2
3
4
5
6
7
8
9
10
11
12
13
14
这样,实体部分的编码就等于告一段落了.
第三部分:测试
我是新建了一应用程序进行测试,因为我个人更喜欢界面化的操作,交互的快感,呵呵!
2
3
4
5
6
7
8
9
10
11
12
13
大家可以看到,我在这个类的构造函数里写了这样两个语句:
IConfigurationSource source = System.Configuration.ConfigurationSettings.GetConfig("activerecord") as IConfigurationSource;
ActiveRecordStarter.Initialize(source, typeof(UserEntity));
从配置文件里读取配置,最后对ActiveRecordStarter进行初始化,就可以进行方法的执行了.
小弟第一次发系列文章,还请高手们多多见谅.
谢谢Terrylee老师的教程对我的帮助.
QQ:22566547;
MSN:LGUYSS@GMAIL.COM;
SITE:WWW.MOBILEBETA.NET