Castle ActiveRecord学习实践(4):实现One-Many关系的映射
2006-04-06 16:28:00
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://terrylee.blog.51cto.com/342737/67660 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
摘要:前面几篇文章简单的介绍了ActiveRecord中的基本映射以及构建配置信息,本文我们用ActiveRecord里面的Blog,Post例子来实现One-Many/Many-One关联。
主要内容
1.准备数据表结构
2.编写实体类并介绍HasMany和BlongsTo特性
3.构建配置信息
4.编写测试代码
一.准备数据表结构
在这个例子中,我们引入了两个对象Blog、Post,它们之间的关系是一对多,即一个Blog有多篇Post。需要用到的数据表结构如下
CREATE TABLE Blogs (![]() blog_id int IDENTITY(1, 1) PRIMARY KEY,![]() blog_name varchar(50),![]() blog_author varchar(50)![]() )![]() ![]() CREATE TABLE Posts (![]() post_id int IDENTITY(1, 1) PRIMARY KEY,![]() post_title varchar(50),![]() post_contents text,![]() post_categories varchar(50),![]() post_blogid int FOREIGN KEY REFERENCES Blogs (blog_id),![]() post_created datetime,![]() post_published bit![]() )二.编写实体类
首先我们来看Blog实体类的编写,需要用到HasMany特性,这时我们会在Blog实体类中定义一个Posts属性,用它来表示该Blog所发表的所有Posts,代码如下
[ActiveRecord("Blogs")]![]() public class Blog : ActiveRecordBase![]() {![]() //……![]() private IList _posts;![]() ![]() [HasMany(typeof(Post), Table="posts", ColumnKey="post_blogid")]![]() public IList Posts![]() {![]() get { return _posts; }![]() set { _posts = value; }![]() }![]() }HasManyAttribute说明
Cascade的类型值有如下几种
在Post实体类中,我们需要定义一个Blog类型的属性,并且用到BlongsTo特性,即一个Post属于某一个Blog,代码如下:
[ActiveRecord("Posts")]![]() public class Post : ActiveRecordBase![]() {![]() //……![]() private Blog _blog;![]() ![]() [BelongsTo("blogid")]![]() public Blog Blog![]() {![]() get { return _blog; }![]() set { _blog = value; }![]() }![]() }BelongsToAttribute说明
Cascade类型如下
OuterJoin选项有三个:Auto,True,False
最后完整的Blog实体类如下
/// <summary>![]() /// Blog 的摘要说明。![]() /// </summary>![]() [ActiveRecord("Blogs")]![]() public class Blog : ActiveRecordBase![]() {![]() private int _id;![]() ![]() private String _name;![]() ![]() private String _author;![]() ![]() private IList _posts;![]() ![]() [PrimaryKey(PrimaryKeyType.Native, "blog_id")]![]() public int Id![]() {![]() get { return _id; }![]() set { _id = value; }![]() }![]() ![]() [Property("blog_name")]![]() public String Name![]() {![]() get { return _name; }![]() set { _name = value; }![]() }![]() ![]() [Property("blog_author")]![]() public String Author![]() {![]() get { return _author; }![]() set { _author = value; } |









}
}