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子句。
相关文章推荐
- Castle ActiveRecord学习实践(3):映射基础
- Castle ActiveRecord学习实践(1):映射基础
- Castle ActiveRecord学习实践(6)延迟加载
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(3)配置与初始化
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(10)——使用多数据库
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(2):构建配置信息
- Castle ActiveRecord学习实践(8)HQL查询
- Castle ActiveRecord学习实践(1):快速入门指南
- C#.Net Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(10):深度分析Schema Pitfals
- Castle ActiveRecord学习实践(2)映射
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(3):映射基础
- Castle ActiveRecord学习实践(10):深度分析Schema Pitfals