ORM全称Object/Relation Mapping 即对象关系映射,既然开发ORM,那就无可避免的要涉及到对象之间的关系。
通过面向对象思想的抽象, 可以将对象间的关系定义为一下几种:
- 一对一
- 多对一(一对多)
- 多对多
我们可以很简单的对对象关系建立一个枚举.
public enum Relation
{
None=1,
OneToMany,
ManyToOne,
OneToOne,
ManyToMany
}
这个Relation的枚举将会在RelationAttribute中运用,具体情况可以参见 轻量级ORM开发系列:Attribute准备
下面我们来看一下级联操作
主流的数据库都支持Cascade操作,下面我们给一个 Cascade操作的小例子——级联删除
create table a
(
id varchar(20) primary key,
password varchar(20) not null
)
create table b
(
id int identity(1,1) primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B创建了外码userId 对应A的主码ID,声明了级联删除
测试数据:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除
delete a where id='11'
数据库一般支持的级联有ON UPDATE CASCADE和ON DELETE CASCADE
如果我们可以很好的运用这些关系的话,我们就可以实现像nhibernate一样的级联删除。
下面我们 一个级联枚举
public enum Cascade
{
All,
SaveOrUpdate,
Delete,
None
}
这个Cascade的枚举将会在RelationAttribute中运用,具体情况可以参见 轻量级ORM开发系列:Attribute准备
好了,今天的讨论就到这里了,十点半了。各位晚安!