Introduction
作为程序员,我们在学习一些新技术的时候,范例有时候会是我们最大的敌人。指南通常被设计成简单易懂,但同时里面的懒惰、无效率的甚至是危险的代码编写会增多。像这种情况最普遍存在的就是在ADO.NET的范例中了。在这篇文章中,我们将看一下数据库中的强类型对象有什么意义,会让你在你的程序中这样做,尽管缺乏范例。
有点特别的是,我们将看到在Visual Studio 2005中是如何创建和使用强类型数据集的。正如这篇文章所探究的,与另外一种弱类型数据存取技术相比,强类型数据集提供了许多有利之处。我们也会在这里看到,用Visual Studio 2005创建和使用强类型数据集并没有变得更简单。想学更多就继续看下去吧。
The Basics and Benefits of Strongly-Typed Objects
要想明白强类型是什么意思,你可以先想想约会。如果你是单身,你会考虑跟哪种类型的人约会呢?你可能有一些特定的标准(比如健康和有魅力),又或者标准很简单或并不是很明确。无论你的条件是什么,当你决定更多地与谁一起的时候,你总会用自己对这一些类型的一定的标准去衡量考虑。如果你很聪明,你会想一大堆来保护自己不受感情创伤。你可能会发现,比如说,与一个酒鬼相处是很不稳定,除非两人之间有一个认真的关系。但是,让一个人改变是很痛苦并且非常困难的。因此,你的智慧会指示你让你在这段关系开始前就叫停。给你的约会标准里加一个不喝酒的条款会保护你不会在未来心痛,并且让你可以更专心的把你的时间和精力放在更好的候选人身上。
你可能在惊讶这个推理与编程有什么关系。没关系,跟我来吧,可爱的读者!ADO.NET数据存取对象是被设计成极富弹性的。当你从数据库中读取数据时,你可能是用许多平常.NET framework允许的的通用类型的对象在工作,除非遇到特殊的问题。应用我们的约会理论,基本上可以把你的相关数据看作是通用对象。“我约会的只要不是太麻烦的就好了。”难道你就不能再明确一点吗?甚至连是人还是其它生物都没有限制!作为你的朋友,我恳求你,“多点标准吧!让你的清单缩小一点!”
正如你如果忽视约会的对象是谁会导致将来的关系问题一样,在你的代码中放任你的objects也会造成一些错误。并且,如果你让旧的object在你的子程序中漫舞,你可能直到程序运行执行时才会发现这是个问题。用我们的约会理论来看,在运行时捕捉错误就好像你的约会在一间新潮的意大利餐馆中间发生痛苦和难堪的争吵一样。是的,你发现了,如果你在之前先有计划,你就不会在一堆用餐者的注视中结束这个场面,也不会很难堪。只要在你的代码里简单地应用一些严格点的标准,你就可以在程序开始编译前捕捉到错误。比如下面这句代码例子:
string FirstName = myrow.("FirstName").ToString(); 这个例子中的DataRow是无类型的,结果就是,你必须要用列的名字作字符串去得到你所需要的值(或者你可以选用这个列在记录的列集合中的索引)。好在那一列确实存在。DataRow的列的数据类型是object,我们假定这个FirstName列下面的数据类型是string,而且我们在使用之前必须要把它显式转换成string。如果这一列的名字发生变化(例如变成PersonFirstName),编译器并没有办法通知你。郁闷吧?但你可以不这样的。如果你的代码像下面这样,你的生活就会更简单,你的代码就会更可靠。
string FirstName = PersonRow.FirstName; 在这第二个例子中,我们用一个强类型的行,并且我们知道FirstName属性是string类型的。没有凌乱的列名,也没有乱七八糟的类型转换。编译器已经为我们做了类型检查,我们可以放心的进行其它工作,而丝毫不用担心是否把列名敲对了。
其它所有的东