【第22期】观点:IT 行业加班,到底有没有价值?

ORM中数据类型的无缝转换

原创 2013年12月02日 16:37:32

对于一个ORM框架来说,实体对象中或说是编程语言中的数据类型最好还是要能和数据库中的数据类型能实现自动的无缝转换,这样的好处是显而易见的,一是使用起来比较简单,减少重复性工作;二是可以充分利用编程语言(尤其是强类型的C#)的类型校验能力,可以显著减少bug。

要实现这个无缝转换,我们要做这么两件事:

1 确定转换点和转换方向;

2 确定要做哪些转换;

确定转换点很简单,就是在数据库的操作点上,也就是增删改查,更具体的就是在Insert/Delete/Update/对象的初始化函数Init_Delegate中。转换方向也很清楚,前三个函数是从c#到数据库,后一个是从数据库到c#。

应当注意的是,c#和数据库之间的数据转换我们只需要考虑简单数据类型就可以了,不需要考虑结构化的数据类型。由于和数据库的交互我们是采用的ado,所以简单的数据类型我们又可以划分为如下几种:

1 数值类型,可以直接拼入sql语句中;

2 字符串、日期、字节数组类型,应通过参数的方式进行传递;

而sql语句的拼接主要发生点在于:

Insert:主要是values子句;

Delete:主要是where子句;

Update:where和set子句;

Select:主要是where子句;

在这些子句中,我们首先要判断数据类型,然后选择是直接拼入相应子句,还是拼入参数,然后在对参数进行赋值。

从c#到数据库的转换,数值类型和字符串、日期类型都比较好处理,需要进行特殊处理的有:

1、bool型稍麻烦点:要根据其值的真假先转换为1/0,然后再传递;

2、枚举类型要先根据基类型也转换为相应的数值,然后再传递;

3、现在xml用的越来越多,所以也要能支持,要将其先转换为字节数组,然后再传递。

反过来,从数据库到c#的转换也就是上面的逆过程,由于c#在从数据库读取数据时,已经按数据库中定义的存储数据的各列的数据类型将其转换为了对应c#中的数据类型,所以我们其实只要关心刚才列举的bool、枚举、xml这三类就可以了:

1、bool比较简单,判断一下数据是否等于1就可以了;

2、枚举比较麻烦,要识别出目标类型是枚举类型,然后进行相应的转换;

3、xml就是将字节数组反向转换回来。


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

理解 pureQuery:IBM 最新的 Java 数据库应用编程范例

http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0708ahadian/index.html     简介 关系数据访问的对象化 大多数业务都建立在信息管理系统的基础上,而这些信息管理系统主要的底层基础设施又是基于存储在一个或

ORM的实现要点

在.Net 3.5刚出来的时候,笔者对linq及其兴奋,当时准备做saas,需要将同名数据表根据用户的不同进行映射,所以对linq很是钻研了一翻,但后来性能方面有些不满意,还是改回了ado,但是ado...

android和java面试题

| 二、面试题_Java | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 15.一个类实...

30天学会javase

欢迎大家来到我的CSDN博客,今天刚刚注册,在未来的30天里我讲会为大家更新一些,关于java基础的一些教程和习题; 废话不多,我们现在来来了解一下什么是java: 1背景 编辑 JAVA&...

JAVA基础

ava,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。 目录 平台构架 名字起源 历史 语言特点 主要特性 相关技术 开源项目 Java IDE 展开 编辑本段 平台构架   Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(A

Java深入(面试常见题)

笔试题之Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法,其他。有些题来自网上搜集整理,有些题...

pureQuery:IBM 最新的 Java 数据库应用编程范例

简介 关系数据访问的对象化 大多数业务都建立在信息管理系统的基础上,而这些信息管理系统主要的底层基础设施又是基于存储在一个或多个关系数据库中的数据。这些系统由一些软件程序组成,这些软件程序专门用于信息处理,并且是以 Java 之类的托管语言实现的。 作为一种以封装、继承和多态为特征、易于使用、基于面向对象的语言,Java 一方

什么是java

欢迎大家来到我的CSDN博客,今天刚刚注册,在未来的30天里我讲会为大家更新一些,关于java基础的一些教程和习题; 废话不多,我们现在来来了解一下什么是java: Java是由Sun  ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)