C# 之 O/R Mapping 对象关系

 

在我们的系统中,存在大量的需要进行持久化存储的对象,这些对象可能是各种各样的业务单据,也可能是我们的系统配置信息等。另外一些属于内存中使用而不需要进行持久化存储的对象,不属于我们的讨论范围。而在支持对象序列化的语言比如C#Java中,我们可以将这些对象序列化到磁盘文件或者直接保存到关系数据库中。其中关系数据库是我们最主要也是最安全的选择。
在对数据库中的业务数据进行各种操作的时候我们发现,我们进行的大量的InsertUpdateDelete操作,除了其SQL语句根据不同的对象有不同的变换之外,其主要流程存在很多相似之处。于是人们就想通过一个东西来实现这些相同部分的操作的自动化,而那些不同的流程,操作再做特殊处理。这样我们就可以把主要的精力都集中在那些个性化的,特殊的流程操作上。这就是ORM产生的根本原因。
Java的世界里,ORM框架的应用比较早,也比较成熟,比如Hibernate等,而在.NET世界里,起步就相对晚的多。但是由于担心使用开源的ORM框架导致项目更为复杂(因为这些开源工具虽然很好,但是各个项目总是存在自己特殊的地方。所以目前不敢用)。但是我们确可以自己设计开发些小型的,尽量符合自己项目的ORM

可是不论怎么样,我们都需要对ORM有一定的了解:


一、对象的继承结构:
在支持OO的语言中,继承是最重要的概念之一,所以我们的ORM也应该对继承作出相应的支持。一般来说,对于ORM世界中的继承有三种模式:


1
、一个继承树映射到一个表(ONE_INHERITANCE_TREE_ONE_TABLE):
即将具有相同父类的所有类都映射到一个表中,这些类属性映射的并集组成了这个表的所有列,在这种情况下,只需要对最底层的类进行映射。如下面一个类结构:

在上面的类结构中,父类有属性Property1Property2,而子类Child1有属性Property3,子类Child2有属性Property4
所以如果采用ONE_INHERITANCE_TREE_ONE_TABLE映射模式的话,数据库中只有一张表。

类属性

数据库表字段

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值