.Net 2.0正式版的正式发布,对我们程序开发人员来说无疑是一件很大的喜事,已经很多的人开始了解并使用.NET 2.0。Visual Studio 2005 的一些新的增强功能和ADO.NET 2.0的新特性让我们开发高可伸缩的多层数据库应用程序更加简单和快捷。本文将带领大家使用Visual Studio 2005来创建一个N层数据库应用的示例,并介绍一些NET 2.0和 Visual Studio 2005相关的知识。
在.NET 1.1下就可以使用强类型数据集,可是在Visual Studio 2003里开发起来还是有一些不方便,在Visual Studio 2005里对DataSet的设计视图做了很大的改进,因为ADO.NET 2.0增加了TableAdapter对象,所以现在也可以在DataSet设计视图里添加DataTable的表适配器。以前的typedDataSets只是一些数据实体(哑对象,只有属性的类)的集合,并不能很方便的自我管理持久化,以及数据完整性验证等。现在可以很方便的实现这些。
我们今天示范的这个例子是做一个显示消费者列表,并可以查看每个消费者订单细目的一个小程序。先用Visual Studio 2005创建一个typedDatasetSample.lib的类库项目,这个类库项目呢,我们主要保存一些强类型数据集,我们给这些强类型数据集加上一些自我持久的方法以及一些业务逻辑。然后呢我们就可以在构建桌面程序或者Web程序的时候使用它了,它就相当于我们的业务逻辑层,以后也许是通过Remoting来发布,也许通过Web服务发布,也许直接拷贝DLL来发布,一般把它放在Application Server上,以方便你的前台Smart Client,ASP.Net,以及移动应用来实例并使用。
这是一个企业应用的核心,所以我们先构建它,然后就可以用Composite UI Application Block (CAB)来创建Smart Client界面,用ASP.NET 2.0和微软的EntERPriseLibrary November 2005 CTP创建Web应用界面和移动应用界面。Asp.net 2.0加入了WebPart,MastPage,ObjectDataSource这几个控件大大简化了创建Web界面应用的过程,大大提高了开发者的用户体验(个人感觉是这样的,使用起来非常的舒服)。Asp.Net 2.0的设备自适应功能,设备过滤器让开发者构建移动应用和构建普通Web应用统一了起来,写一段程序可能不用任何修改就即可以在Internet Explorer上显示,也可以在Inernet Explorer for Pocket PC上显示,也可以在Openwave WAP Emulator上显示,新的MultiView,View,Pager控件也对你快速开发移动应用提供了很大的帮助。我推荐大家尽量使用微软推荐的工具和技术来实现自己的企业应用,毕竟微软还是更值得信赖的。
项目建好了,先删掉默认的Class1.cs,右键单击解决方案选择【Add】【New Item】添加一个名为Customer.xsd的数据集。Ctrl+Alt+S打开Server Explorer,右键单击【Data Connections】选择【Add Connection】,在打开的窗口里的【Server Name】输入框里输入“localhost\sqlexpress”,选中【Use Windows Authentication】单选框,在【Select or enter a database name】选择框里选择“Northwind”数据库,点击【Test Connection】,测试成功后单击【OK】按钮。这样我们就新建了一个数据连接。
在Server Explorer里展看依次展开localhost\sqlexpress节点,Tables节点,并把Customers表拖到数据集设计视图上。我们可以看到Visual Studio自动给我们添加了一个Customers的强类型数据集和一个叫CustomersTableAdapter的表适配器,并给这个表适配器自动添加了一个Fill的方法,这个方法是用来填充Customers数据集的。细心的朋友也许会发现在properties文件夹下添加了一个Settings.settings的文件,双击它可以看到里面保存了一个数据库连接字符串,这也是.NET 2.0的新特性,以后还可以以编程的方式来访问它,如果感兴趣也可以看看它自动生成的Settings.Designer.cs文件。
右键在CustomersTableAdapter最上面单击并选择【Add Query】,选择【Use SQL statements】,点击【next】按钮这个选项是我们直接编写SQL语句,下面两个选项分别是创建一个新的存储过程或者使用一个新的存储过程。下一个界面是让你选择查询的类型,是插入操作还是删除操作还是更新操作等,我们先创建一个插入操作,选择【Insert】进入下一步,点击【Query Bulider】来可视化的生成SQL语句,这个查询生成器我想大家都很熟悉吧,比我的wawaCodePro要灵活多了,你可以很方便的创建出多表连接的复杂查询语句,以可以手动创建一些定制的Insert,Update等SQL语句,大家不要以为自己手工写复杂的SQL语句是很酷的事情,其实这个会使用这个查询生成器才厉害呢,Access里就有的。创建完语句后可以点击下面的【Excute Quert】按钮来测试你的语句是否正确,因为我们是一个需要参数的SQL语句,所以会弹出【Query parameters】窗口来让你输入参数。最后我们生成的语句如下。
INSERT INTO Customers (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES (@CustomerID,@CompanyName,@ContactName,@ContactTitle,@Address,@City,@Region,@PostalCode,@Country,@Phone,@Fax) |
点击下一步键入自定义的方法名字“NewCustomer”,点【next】【finish】。如果要修改已经生成的查询,可以在要修改的查询上右键选择【Configure】以向导的方式来重新生成查询,或者选择相应查询,在【properties】面板里设置它的属性。分别以相同的方式添加删除和修改的查询。删除的语句如下:
DELETE FROM Customers WHERE (CustomerID = @Original_CustomerID)
删除的方法键入“DeleteCustomerByCustomerID”。
修改的语句如下:
UPDATE Customers SET CompanyName = @CompanyName, ContactName = @ContactName, ContactTitle = @ContactTitle, Address = @Address, City = @City, Region = @Region, PostalCode = @PostalCode, Country = @Country, Phone = @Phone, Fax = @Fax WHERE (CustomerID = @Original_CustomerID) |
修改的方法键入“UpdateCustomerByCustomerID”。
大家有兴趣可以看看自动在Customers.Designer.cs文件里生成的代码,一切的一切Visual Studio都给你生成了。定位到NewCustomer()