主要内容
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 | 指明哪些操作会从父对象级联到关联的对象,相关的操作见后面,如果不指定,则为None | Cascade=ManyRelationCascadeEnum.All |
Inverse | 指定是否级联操作 | Inverse =true|false |
Schema | 指定Schema的名字 | Schema="ARDemo" |
Table | 指定持久化类所关联的数据库表名,如果表名与类名相同,可以省略 | Table="posts" |
ColumnKey | 指定关联类的一个属性,这个属性将会和本外键相对应。 | ColumnKey="post_blogid" |
Where | 指定一个附加SQL的Where子句 | Where="IsPost = 0" |
Lazy | 指定是否延迟加载关联对象 | Lazy=true|false |