一、概述
Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。关系型数据库往往通过外键来表述实体关系,Active Record 在数据源层面上也将这种关系映射为对象的关联和聚集。
Active Record 适合非常简单的领域需求,尤其在领域模型和数据库模型十分相似的情况下。如果遇到更加复杂的领域模型结构(例如用到继承、策略的领域模型),往往需要使用分离数据源的领域模型,结合 Data Mapper (数据映射器)使用。
Active Record 驱动框架一般兼有 ORM 框架的功能,但 Active Record 不是简单的 ORM。著名的例子是全栈(Full Stack) Web 开发框架 Ruby on Rails。
二、准备
下载:1)Castle.ActiveRecord-3.0.RC.zip --程序中要引用的dllc包
2)Castle-bin-net-2.0 --使用执行Castle.ActiveRecord.Generator.exe生成实体类,也可以不用该工具,用手动编写。
三、Active Record的使用
本文以一个博客系统为例。
第一步:创建项目
1)添加一个解决方案ActiveRecordDemo;
2)在解决方案里添加一个类库项目ActiveRecordDemo.Model和Mvc应用程序ActiveRecordDemo.UI.MVC2;
在Model项目中引用下载的Castle.ActiveRecord中的所有dll,在MVC项目中引用NHibernate.dll和Castle.ActiveRecord.dll。
第二步:准备数据库表
在Mvc项目中添加数据库文件Blog.mdf,为了方便,就以文件的方式放在项目中,然后创建两张表:
--Posts表 CREATE TABLE [dbo].[Posts]( [Id] [int] IDENTITY(1,1) PRIMARY KEY, [Subject] [nvarchar](200) NOT NULL, [Text] [nvarchar](max) NOT NULL, [DateAdded] [datetime] NOT NULL, )
--Comments表 CREATE TABLE[Comments]( [Id] [int] IDENTITY(1,1) PRIMARY KEY, [Test] [nvarchar](max) NOT NULL, [Author] [nvarchar](50) NOT NULL, [DateAdded] [datetime] NOT NULL, [PostId] [int] NOT NULL ) GO ALTER TABLE [dbo].[Comments] ADD CONSTRAINT [FK_Comments_Posts2] FOREIGN KEY([PostId]) REFERENCES [dbo].[Posts] ([Id]) GO