本来打算一口气把Castle.ActiveRecord的学习笔记写完,没想到前段时间太忙了,一放就放了半个月,现在继续未完成的学习笔记吧!

这篇学习笔记主要介绍ActiveRecord如何处理one-to-many的映射,对于many-to-one映射只需把one-to-many的处理过程反过来就可以了。本文涉及了两个实体类User、Address,两个类的关系是一对多,下面是这两个类的实体关系图:
Active Record学习笔记(三):处理One-To-Many映射

主要内容:
1.编写数据库
2.HasMany和BelongsTo属性说明
3.编写实体类
4.编写表示层调用代码

一、编写数据库
Active Record学习笔记(三):处理One-To-Many映射--User类对应的数据表
Active Record学习笔记(三):处理One-To-Many映射
Create Table [Users]
Active Record学习笔记(三):处理One-To-Many映射(
Active Record学习笔记(三):处理One-To-Many映射    
[ID] Int Identity(1,1Primary Key,
Active Record学习笔记(三):处理One-To-Many映射    
[LoginName] Varchar(50not null,
Active Record学习笔记(三):处理One-To-Many映射    
[Password] Varchar(20not null
Active Record学习笔记(三):处理One-To-Many映射)
Active Record学习笔记(三):处理One-To-Many映射
Active Record学习笔记(三):处理One-To-Many映射
--Address类对应的数据表
Active Record学习笔记(三):处理One-To-Many映射
Create Table [Address]
Active Record学习笔记(三):处理One-To-Many映射(
Active Record学习笔记(三):处理One-To-Many映射 ID 
int identity(1,1primary key,
Active Record学习笔记(三):处理One-To-Many映射 Province 
Varchar(50),
Active Record学习笔记(三):处理One-To-Many映射 City 
Varchar(50),
Active Record学习笔记(三):处理One-To-Many映射 uID 
int FOREIGN KEY REFERENCES Users (ID)
Active Record学习笔记(三):处理One-To-Many映射)

二、HasMany和BelongsTo属性说明
  HasMany属性:此属性用于代替NHibernate配置文件中的<many-to-one>标签;该属性用在“一”的类中(父对象,本文为User类),指出与“多”的类(级联对象,本文为Address类)的对应关系。具有以下几个主要子属性:
  1.Type:指出关联对象的类名,相当于<many-to-one>标签中的class属性;
  2.Table:指出关联对象的类对应的数据表(本文的数据表Address);
  3.ColumnKey:指出关联对象对应的数据表中指向主类数据表的字段名(本文数据表Address中的字段uID);
  4.Cascade:指明哪些操作会从父对象级联到关联的对象,相当于<many-to-one>标签中的cascade属性。该属性值应为CascadeEnum枚举值之一:
    a).All:表示父对象的任何操作都会关联到级联对象;
    b).Delete:表示只有对父对象进行删除操作时才会关联到级联对象;
    c).SaveUpdate:表示只有对父对象进行保存、更新操作时才会关联到级联对象;
    d).None(默认值):表示对父对象的任何操作都不会关联到级联对象;
  5.Lazy:指出是否延迟加载级联对象,其属性值为true或false,二者选一;
  6.Where:指定一个附加SQL的Where子句,这里应该写HQL语句;
  7.OrderBy:指定排序方式,这里应该写HQL语句;
  8.Inverse:指定父对象是否级联到子对象;

  BelongsTo属性:此属性用于代替NHibernate配置文件中表示<map>、<set>、<list>、<bag>之类的标签;该属性用在父对象中,指出与级联对象的对应关系。具有以下几个主要子属性:
  1.Cascad:指出是否级联操作,其值于HasMany属性中的Cascade属性一样;
  2.Column:指出数据表中指向父对象数据表的字段名;
  3.Insert:是否允许插入;
  4.Update:是否允许更新;
  5.OuterJoin:是否允许外联抓取,相当于<many-to-one>标签中的outerjoin属性,其值应为OuterJoinEnum枚举值之一:
    a).Auto(默认值):使用外连接抓取关联(对象),如果被关联的对象没有代理(proxy) ;
    b).True:一直使用外连接来抓取关联;
    c).False:永远不使用外连接来抓取关联;

三、编写类体类
  1.编写实体类:User:
}

  2.编写实体类:Address
}

  3.编写配置文件(与以前一样)

四、编写表示层调用代码(只列举新增的代码)
Active Record学习笔记(三):处理One-To-Many映射private void btnAddNewUser_Click(object sender, EventArgs e)
}

相关文章:

  • 2021-12-08
  • 2021-07-16
  • 2022-12-23
  • 2021-12-31
  • 2021-11-21
  • 2021-06-29
  • 2021-12-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案