Castle ActiveRecord学习实践(5) 实现Many–Many关系的映射

主要内容

1.准备数据库表

2.编写实体类

3.编写测试代码

一.准备数据库表

接着在上篇文章中的例子,为了实现多对多的关系,我们引入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)
)

二.编写实体类代码

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

// Blog
[HasAndBelongsToMany( typeof(Community),
    Table="Blog_Community",
    ColumnRef=" community_id ",
    ColumnKey=" blog_id " )]
public IList Communitys
{
  get { return _community; }
  set { _ community = value; }
}

// Community
[HasAndBelongsToMany( typeof(Blog),
    Table="Blog_Community",
    ColumnRef="blog_id",
    ColumnKey="community_id" )]
public IList Blogs
{
  get { return _blog; }
  set { _ blog = value; }
}

时间: 2024-09-27 12:51:45

Castle ActiveRecord学习实践(5) 实现Many–Many关系的映射的相关文章

Castle ActiveRecord学习实践(10) 深度分析Schema Pitfals

摘要:写这篇文章缘于昨天跟Linkin的一段聊天.我在使用ActiveRecord的一些技巧一文中的由实体类生成数据库表提到了这样一句话:生成数据库表时只有当该表不存在时ActiveRecord才会生成,否则表如果存在ActiveRecord不会做任何事情,也不会报任何错误.Linkin说他在实验时如果数据库表存在,ActiveRecord会删除表中的记录,其实这句话是在有些情况下是不对的,本篇文章将详细介绍Castle ActiveRecord中的Schema Pitfals. 主要内容 1.

Castle ActiveRecord学习实践(1) 快速入门指南

摘要:最近几天有时间看了一下Castle,原来它的功能是如此的强大,从数据访问框架到IOC容器,再到WEB框架,基本包括了整个开发过程中的所有东西,看来得好好学习研究一下了,并且打算把自己学习过程的一些东西记录下来.先从ActiveRecord开始吧,ActiveRecord提供的简洁的O/R映射给我留下了很深的印象,本文将通过一个简单对象的CRUD操作来带你快速走进Castle ActiveRecord. 主要内容 1.概述 2.准备相关的数据表 3.编写User实体类 4.构建配置信息 5.

Castle ActiveRecord学习实践(9) 使用ActiveRecord的一些技巧

主要内容 1.由实体类生成数据表 2.运行存在的SQL脚本 3.使用空属类型 4.使用枚举类型的属性 5.使用NHibernate中的日志记录 一.由实体类生成数据表 在前面所用到的例子中我们都是先有数据表结构,然后才有实体类,然而这会让很多朋友认为ORM怎么变成了ROM了,其实这只是我们平时的一个开发时的习惯问题,ActiveRecord是支持先有实体类,再由实体类生成数据库表.只不过我们可以在开发中根据项目的实际情况在这两种之间选择.看下面的代码,要生成数据库表结构,在实体类中需要多提供一些

Castle ActiveRecord学习实践(8) 数据有效性的验证

主要内容 1.概述 2.使用Validation 3.如何扩展 4.深入分析验证 一.概述 在录入数据时,对数据有效性的验证是必不可少的,很多时候我们在UI层上就会做一层验证,但有时也需要在底层做一些必要的处理,这就要用到ActiveRecord中的数据有效性的验证.ActiveRecord为我们提供了如下几个验证: n ValidateEmail n ValidateIsUnique n ValidateRegExp n ValidateNotEmpty n ValidateConfirmat

Castle ActiveRecord学习实践(4) 实现One-Many关系的映射

主要内容 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) ) CR

Castle ActiveRecord学习实践(3) 映射基础

主要内容 简单映射 1.ActiveRecordAttribute 2. PrimaryKeyAttribute 3.CompositeKeyAttribute 4.PropertyAttribute 5.FieldAttribute 一.ActiveRecordAttribute 每一个实体类都必须继承于基类ActiveRecordBase,并在实体类上设置特性ActiveRecordAttribute,示例代码 //指定数据库表名 [ActiveRecord("Blogs")] p

Castle ActiveRecord学习实践(2) 构建配置信息

主要内容 1.需要配置什么 2.如何去配置 3.常见的配置示例 一.需要配置什么 在第一篇大家都已经看到了,其实我们的配置信息跟用NHibernate时的配置是一样的,这是因为ActiveRecord在底层封装了NHibernate.为了没有用过NHibernate的朋友,这里再把配置信息简单介绍一下. 1.配置NHibernate ADO.NET属性 属性名 说明 hibernate.connection.provider_class 定制IConnectionProvider的类型. 例如:

Castle ActiveRecord学习实践(7) 使用HQL查询

主要内容 1.HQL概述 2.SimpleQuery查询 3.ScalarQuery查询 4.自定义查询 5.使用CallBack 一.HQL简单介绍 HQL全名是Hibernate Query Language,它是一种完全面向对象的查询语言.先来看一下HQL最基本的一些用法 1.From子句 from Post 你也可以为Post起一个别名 from Post as post 或者省略as from Post post 2.Select 子句 select Name,Author from

Castle.ActiveRecord的初始化配置补充及配置封装的解决方案

前些天我发了一篇关于AR的配置的文章,是我帮一位刚学习AR的朋友做了一个小实例后写上来的,里面我采用了IConfigurationSource,ActiveRecord是在web.config里配置的,其实ActiveRecord可以单独写在别的地方或动态配置也是可以的,比如用XML来配置,用Hashtable来配置.下面我简单介绍了怎么配置. 一.用XML配置,通过XmlConfigurationSource来获取配置信息,AppConfig.xml,详细配置请看下面xml数据 1<?xml