我们开始创建我们的DAL,先给我们的项目添加一个强类型的DataSet。做法如下,在解决方案管理器里的项目 节点上按右鼠标,选择“添加新项(Add a New Item)”。在模板列单里选择DataSet,将其命名 为Northwind.xsd。
图 4: 给你的项目添加一个新的DataSet
在点击“添加(Add)”按钮后,Visual Studio会问我们是否将DataSet添加到App_Code文件夹中,选择“Yes” 。然后Visual Studio会显示强类型的DataSet的设计器,同时会启动TableAdapter配置向导,允许你给你的强 类型DataSet添加第一个TableAdapter。
强类型的DataSet 起了强类型对象的集合的作用,它由强类型DataTable实例组成,每个强类型DataTable又进 而由强类型的DataRow实例组成。我们将为这个教程系列要用到的每个数据表建立一个对应的强类型DataTable 。让我们开始吧,先为Products表建立一个DataTable。
记住,强类型的DataTable并不包括如何访问对应底层的数据表的任何信息。要获取用来填充DataTable的数据 ,我们使用TableAdapter类,它提供了数据访问层的功能。对于我们的Products DataTable, 相应的TableAdapter 类将包 括GetProducts()和GetProductByCategoryID(categoryID)等方法,而我 们将在表现层调用这些方法。DataTable的作用是在分层间传输数据。
TableAdapter配置向导首先要你选择使用哪个数据库。下拉框里列出了服务器资源管理器内的那些数据库。如 果你预先没有把Northwind数据库添加到服务器资源管理器里去的话,这时你可以点击新连接按钮来添加。
图 5: 在下拉框里选择Northwind数据库
选择好数据库后,按“下一步”按钮,向导会问你是否想在Web.config文件里存放连接字符串。 将连接字符串存放在Web.config文件里,你可以避免把连接字符串硬写在TableAdapter类的编 码中,如果将来连接字符串信息改动的话,这种做法会极大地简化要做的编码改动。如果你选择在配置文件存 放连接字符串,连接字符串将被置放于<connectionStrings>段落中,这个段落可以被加密来提高安全,也可以通过IIS 图形界面管理工具中的新的ASP.NET 2.0属性页来修改。当然这个工具更适于管理员。
图6: 在Web.config中存放连接字符串
接下来,我们需要定义第一个强类型的DataTable的schema,同时为用来填充强类型DataSet的TableAdapter类 提供第一个方法。这两步可以通过建立一个返回对应于DataTable的数据表的字段的查询同时完成。在向导的 最后,我们将为这个查询对应的方法命名。完成后,这个方法可以在表现层调用,它会执行设置好的查询,进 而填充一个强类型的DataTable。
开始定义SQL查询之前,我们必须首先选择我们想要TableAdapter执行查询的方式。我们可以直接用ad-hoc的SQL语句,或建立一个新的存储过程,或使用现存的存储过程。在这些教程里,我们将使用ad-hoc的SQL语句。请参考Brian Noyes的文章“使用Visual Studio 2005 DataSet 设计器创建数据访问层”中使用存储过程的例子。
图 7: 用SQL语句查询数据
至此,我们可以手工输入SQL查询。当生成TableAdapter的第一个方法时,你一般想要让你的查询返回那些需 要在对应的DataTable中存放的字段。我们可以建立一个从Products表里返回所有字段,所有数 据行的查询来达到我们的目的:
图 8: 在文本框里输入SQL查询
或者,我们可以使用查询生成器(Query Builder),用图形界面来构造查询,如图9所示。
图 9: 通过查询编辑器生成查询