您的位置:首页 > 其它

Castle ActiveRecord学习实践4---转

2006-07-27 15:14 489 查看

摘要:多对多的关系在日常开发中也会经常遇到,在ActiveRecord中我们用HasAndBelongsToMany特性来实现Many-Many的关联,本文将通过一个具体的实例来介绍这一用法。

主要内容[/b][/b]

1.准备数据库表

2.编写实体类

3.编写测试代码

一.准备数据库表[/b][/b]

接着在上篇文章中的例子,为了实现多对多的关系,我们引入Community,即每个Blog可以属于多个社区,每个社区也可以有多个Blog。

CREATE TABLE Blogs (

blog_id int IDENTITY(1, 1) PRIMARY KEY,

blog_name varchar(50),

blog_author varchar(50)

)

CREATE TABLE Blog_Community (

blog_Id int NOT NULL ,

community_Id int NOT NULL

)

CREATE TABLE Communities (

community_Id int IDENTITY (1, 1) PRIMARY KEY,

community_Name varchar (50) ,

community_Intro varchar (500)

)

二.编写实体类代码[/b][/b]

为了实现多对多的关系,我们要在Blog、Community类中分别使用HasAndBelongsToMany特性,不需要编写Blog_Community类。示例代码:

// Blog

[HasAndBelongsToMany( typeof(Community),

Table="Blog_Community",

ColumnRef=" community_id ",

ColumnKey=" blog_id " )]

public IList Communitys

// Community

[HasAndBelongsToMany( typeof(Blog),

Table="Blog_Community",

ColumnRef="blog_id",

ColumnKey="community_id" )]

public IList Blogs

[ActiveRecord("Blogs")]

public class Blog : ActiveRecordBase

[ActiveRecord("Communities")]

public class Community : ActiveRecordBase

[Test]

public void TestCascadingSave()

[Test]

public void TestCascadingUpdate()

[Test]

public void TestCascadingDelete()

{

//测试1:删除Blog

Blog blog = Blog.Find(10);

using(TransactionScope btran = new TransactionScope())

{

try

{

blog.Delete();

btran.VoteCommit();

}

catch

{

btran.VoteRollBack();

}

}

//测试2:删除Community

Community community = Community.Find(3);

using(TransactionScope ctran = new TransactionScope())

{

try

{

community.Delete();

ctran.VoteCommit();

}

catch

{

ctran.VoteRollBack();

}

}

}

好了,关于Many-Many关联映射就写这么多了,内容比较简单。下篇文章我会介绍在ActiveRecord中实现延迟加载和使用Where子句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: