对我们程序开发人员来说无疑是一件很大的喜事,已经很多

上传人:ldj****22 文档编号:29981664 上传时间:2018-01-26 格式:DOC 页数:12 大小:56.50KB
返回 下载 相关 举报
对我们程序开发人员来说无疑是一件很大的喜事,已经很多_第1页
第1页 / 共12页
对我们程序开发人员来说无疑是一件很大的喜事,已经很多_第2页
第2页 / 共12页
对我们程序开发人员来说无疑是一件很大的喜事,已经很多_第3页
第3页 / 共12页
对我们程序开发人员来说无疑是一件很大的喜事,已经很多_第4页
第4页 / 共12页
对我们程序开发人员来说无疑是一件很大的喜事,已经很多_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《对我们程序开发人员来说无疑是一件很大的喜事,已经很多》由会员分享,可在线阅读,更多相关《对我们程序开发人员来说无疑是一件很大的喜事,已经很多(12页珍藏版)》请在金锄头文库上搜索。

1、.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 2

2、005 里对 DataSet 的设计视图做了很大的改进,因为 ADO.NET 2.0 增加了 TableAdapter 对象,所以现在也可以在 DataSet 设计视图里添加 DataTable 的表适配器。以前的 typedDataSets 只是一些数据实体(哑对象,只有属性的类)的集合,并不能很方便的自我管理持久化,以及数据完整性验证等。现在可以很方便的实现这些。 我们今天示范的这个例子是做一个显示消费者列表,并可以查看每个消费者订单细目的一个小程序。先用 Visual Studio 2005 创建一个 typedDatasetSample.lib 的类库项目,这个类库项目呢,我们主要保存

3、一些强类型数据集,我们给这些强类型数据集加上一些自我持久的方法以及一些业务逻辑。然后呢我们就可以在构建桌面程序或者 Web 程序的时候使用它了,它就相当于我们的业务逻辑层,以后也许是通过 Remoting 来发布,也许通过 Web 服务发布,也许直接拷贝 DLL 来发布,一般把它放在 Application Server 上,以方便你的前台Smart Client,ASP.Net ,以及移动应用来实例并使用。 这是一个企业应用的核心,所以我们先构建它,然后就可以用 Composite UI Application Block (CAB)来创建 Smart Client 界面,用 ASP.NET

4、 2.0 和微软的 EntERPriseLibrary November 2005 CTP 创建 Web 应用界面和移动应用界面。 A 2.0 加入了WebPart,MastPage ,ObjectDataSource 这几个控件大大简化了创建 Web 界面应用的过程,大大提高了开发者的用户体验(个人感觉是这样的,使用起来非常的舒服)。Asp.Net 2.0的设备自适应功能,设备过滤器让开发者构建移动应用和构建普通 Web 应用统一了起来,写一段程序可能不用任何修改就即可以在 Internet Explorer 上显示,也可以在 Inernet Explorer for Pocket PC 上

5、显示,也可以在 Openwave WAP Emulator 上显示,新的MultiView,View,Pager 控件也对你快速开发移动应用提供了很大的帮助。我推荐大家尽量使用微软推荐的工具和技术来实现自己的企业应用,毕竟微软还是更值得信赖的。 项目建好了,先删掉默认的 Class1.cs,右键单击解决方案选择【Add】【New Item】添加一个名为 Customer.xsd 的数据集。 Ctrl+Alt+S 打开 Server Explorer,右键单击【Data Connections】选择 【Add Connection】,在打开的窗口里的【Server Name 】输入框里输入“lo

6、calhostsqlexpress”,选中【Use Windows Authentication】单选框,在【Select or enter a database name】 选择框里选择“Northwind”数据库,点击【Test Connection】,测试成功后单击【OK】按钮。这样我们就新建了一个数据连接。 在 Server Explorer 里展看依次展开 localhostsqlexpress 节点,Tables 节点,并把 Customers表拖到数据集设计视图上。我们可以看到 Visual Studio 自动给我们添加了一个 Customers的强类型数据集和一个叫 Custo

7、mersTableAdapter 的表适配器,并给这个表适配器自动添加了一个 Fill 的方法,这个方法是用来填充 Customers 数据集的。细心的朋友也许会发现在properties 文件夹下添加了一个 Settings.settings 的文件,双击它可以看到里面保存了一个数据库连接字符串,这也是.NET 2.0 的新特性,以后还可以以编程的方式来访问它,如果感兴趣也可以看看它自动生成的 Settings.Designer.cs 文件。 右键在 CustomersTableAdapter 最上面单击并选择【Add Query 】,选择【Use SQL statements】,点击【ne

8、xt】按钮这个选项是我们直接编写 SQL 语句,下面两个选项分别是创建一个新的存储过程或者使用一个新的存储过程。下一个界面是让你选择查询的类型,是插入操作还是删除操作还是更新操作等,我们先创建一个插入操作,选择【Insert】进入下一步,点击【Query Bulider】来可视化的生成 SQL 语句,这个查询生成器我想大家都很熟悉吧,比我的 wawaCodePro 要灵活多了,你可以很方便的创建出多表连接的复杂查询语句,以可以手动创建一些定制的 Insert,Update 等 SQL 语句,大家不要以为自己手工写复杂的 SQL 语句是很酷的事情,其实这个会使用这个查询生成器才厉害呢,Acces

9、s 里就有的。创建完语句后可以点击下面的【Excute Quert】按钮来测试你的语句是否正确,因为我们是一个需要参数的 SQL 语句,所以会弹出【Query parameters】窗口来让你输入参数。最后我们生成的语句如下。 INSERT INTO Customers (CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES (CustomerID,CompanyName,ContactName,ContactTitle

10、,Address,City,Region,PostalCode,Country,Phone,Fax)点击下一步键入自定义的方法名字“NewCustomer”,点【next】【finish】。如果要修改已经生成的查询,可以在要修改的查询上右键选择【Configure】以向导的方式来重新生成查询,或者选择相应查询,在【properties】面板里设置它的属性。分别以相同的方式添加删除和修改的查询。删除的语句如下: DELETE FROM Customers WHERE (CustomerID = Original_CustomerID) 删除的方法键入“DeleteCustomerByCustom

11、erID”。 修改的语句如下: 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)修改的方法键入“UpdateCustomer

12、ByCustomerID”。 大家有兴趣可以看看自动在 Customers.Designer.cs 文件里生成的代码,一切的一切 Visual Studio 都给你生成了。定位到 NewCustomer()方法可以看到它有个System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, false)属性,这是设置让 ObjectDataSource,BindSource 等数据源控件自动绑定相应操作的属性,估计用的是一种 Ioc(控制反转)的机制来实现的,你在设

13、置ObjectDataSource 的时候它的插入方法会自动绑定到这个方法上,一会儿就会看到。 以上我们把显示消费者列表,以及消费者的修改,删除,添加等持久化操作代码生成了,我们还没有写一行代码,包括 SQL 语句哦。我们的数据实体(强类型数据集的 ROW)虽然是哑对象,但是我们的表适配器可以以托管的形式来对这些实体进行 CRUD 持久化操作,类似于 CMP(容器托管持久化,这里的表适配器就相当于容器)模式,然后我再告诉大家如何给数据实体添加自定义业务逻辑的方法(也许一个方法不能算是一个 Case,但我感觉获取消费者的订单至少是一个 Action 吧)。当然了,我这里告诉大家的只是一种紧耦合的

14、方法,如果你想设计灵活度比较高的高度可伸缩的应用,尽量使用一些Interface,Service,Event ,properties(自定义属性) 等技术来实现数据实体和数据实体具体操作的松散耦合,这样就可以做到我在 UI 层只引用 Customer 这个业务实体,然后调用Customer.GetOrderDetails()方法的时候,也许是在本地 DLL 里实现,也许是在用Rmorting 方式连接到 Application Server 来实现,也许是通过一个叫做GetOrderDetailsByCustomerID 的 Web 服务来实现的。 现在我们来做一个订单细目的业务实体以及获取某

15、个消费者订单细目的操作,因为Northwind 数据库里没有这么一个直接的表来直观的显示订单细目,Orders 只是一个交叉引用表,Order Details 表也是一个交叉引用表,而我们的订单细目要显示订单号,消费者名称,产品名称,购买数量,单价,雇员名称等信息,而这些信息分布在多个表中,我们不能简单的把一个表拖放到数据集设计视图来生成相应的业务实体和表适配器。我们可以在数据集设计视图里的空白处右键选择【Add TableAdapter】,然后按向导在【Quert Builder】 里把 Customers,Orders,Order Details,Procucts,Employees 五个

16、表拖到数据表栏上,然后他们之间的外键关系会自动的可视化的指定,然后分别用鼠标选择几个表的某些字段,最后生成语句如下。 SELECT Customers.CustomerID, Customers.ContactName, Order Details.UnitPrice, Order Details.Quantity, Products.ProductName, Orders.OrderID, Orders.OrderDate, Employees.FirstName + Employees.LastName AS fullname FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID INNER JOIN Order Details ON Orders.OrderID = Order Details.OrderID INNER JOIN Produc

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号