三层架构及代码生成工具动软实现过程介绍(SQL版)1.1_第1页
三层架构及代码生成工具动软实现过程介绍(SQL版)1.1_第2页
三层架构及代码生成工具动软实现过程介绍(SQL版)1.1_第3页
三层架构及代码生成工具动软实现过程介绍(SQL版)1.1_第4页
三层架构及代码生成工具动软实现过程介绍(SQL版)1.1_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“志远”项目开发培训教材 三层架构及代码生成工具介绍 电子信息产业园二一年一月文档修订(记录批准之后的变更情况)版本日期更改人描述(注明修改的条款或页)0.52009-6-10陈欲勐建立模版1.02009-6-21陈欲勐完成草案2.02010-2-3王韫骁完成案例说明目录1 软件架构31.1 三层架构简介31.2 分层式结构的优势和缺点51.3 应用程序框架61.4 三层架构的实践应用81.5 三层架构案例项目:Petshop112 MVC设计模式132.1 MVC设计思想132.2 什么是MVC(Model View Presenter)模式142.3 MVC的优点172.4 MVC的缺点183 构架、框架、设计模式之间的关系简述193.1 软件体系结构和框架的定义193.2 框架与架构之间的关系193.3 框架与设计模式之间的关系194 动软功能介绍214.1 动软简介214.2 动软功能:生成基于三层架构的软件代码214.3 动软功能:辅助功能295 基于工厂模式的三层架构的软件代码405.1 相关目标405.2 项目准备405.3 相关操作415.4 案例说明:插入数据(insert)545.5 案例说明:修改数据(update)645.6 案例说明:编辑数据(select)685.7 案例说明:编辑数据(delet)701 软件架构1.1 三层架构简介三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。此模型将应用程序划分为三个层次,如下图所示:1 表示层(用户界面层):表示层:是系统的UI部分,负责使用者与整个系统的交互,即负责处理用户的输入和向用户输出。在这一层中,理想的状态是不应包括系统的业务逻辑,有时候出于对效率的考虑,这一层可能会在向上传输用户输入之前进行合法性验证。表示层中的逻辑代码,仅与界面元素有关。通常采用前端工具(如 VB、VC 和 Java)开发。在PetShop中,是利用ASP.Net来设计的,因此包含了许多Web控件和相关逻辑。2 业务逻辑层:业务逻辑层是整个系统的核心,它与这个系统的业务(领域)有关。这一层是上下两层的纽带,它建立实际的数据库连接,根据用户的请求生成检索语句或更新数据库,并把结果返回给前端界面显示。这一层通常以动态链接库的形式存在,并注册到服务器的注册表中,它与前端界面通讯的接口符合某一特定的组件标准(如 COM 组件)。可以用任何支持这种标准的工具开发。在PetShop中,业务逻辑层的相关设计,均和网上宠物店特有的逻辑相关,例如查询宠物,下订单,添加宠物到购物车等等。如果涉及到数据库的访问,则调用数据访问层。3 数据访问层:数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作,即负责实际的数据存储和检索。1.2 分层式结构的优势和缺点1.2.1 分层式结构的优势Martin Fowler在Patterns of Enterprise Application Architecture指出:1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。三层架构的优点是显而易见的:我们不必为了业务逻辑上的微小变化而迁至整个程序的修改,只需要修改商业逻辑层中的一个函数或一个过程;增强了代码的可重用性;便于不同层次的开发人员之间的合作,只要遵循一定的接口标准就可以进行并行开发了,最终只要将各个部分拼接到一起构成最终的应用程序。1.2.2 分层式结构的缺点1、降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。1.3 应用程序框架1.4 三层架构的实践应用1.4.1 简单三层架构图通过UML分析,将用户需要实现的动作和用户的数据信息封装在控制类和实体类中,并根据三层架构的原理进行调用。而且在开发的过程中引入了一款辅助开发软件(动软代码生成器2.0),缩短的编程的时间提高的编程的效率,加快了三层架构实现的进度。软件架构应用如下图所示:图 简单三层架构图1.4.2 基于工厂模式的三层架构 图 基于工厂模式的三层架构图1.4.3 系统文件类型说明本项目中文件的主要类型如下:n 页面.aspx文件:与用户交流,和用户进行操作n 页面.cs文件:页面.cs文件调用BLL层中的业务逻辑处理任务。n 业务逻辑层(BLL): 通过访问DAL来实现其功能,由UI(表现层)直接访问n 实体类(Model):包含了数据实体对象,将所要的视图或表用封装成一个类,其中的字段为属性。n 数据访问层工厂(DALFactory):执行数据库操作的所以类的封装。n 数据访问层(DAL): 将DAL(数据访问层)的方法,统一声明,再通过IDAL调用 。n 数据层(DBUtility):通过访问DBUtility(数据层)来访问数据,也可以通过企业库进行数据库访问。1.5 三层架构案例项目:Petshop1.5.1 Petshop简介PetShop是微软提供的一个案例项目。l PetShop是一个灵活的最佳实践的应用程序。l PetShop基于.NET Framework 2.0l PetShop采用的新技术:Master Pages、Membership、Profile、SqlCacheDependencyl PetShop在事务、数据缓存、安全方面使用了.NET 2.0附带的特性1.5.2 Petshop的相关项目1.5.3 Petshop相关资料1. .NET PetShop祥解 /AspxNews/archive/2007/05/06/.aspx2. 源代码下载/voiow/archive/2007/11/17/.html2 MVC设计模式MVC是一种目前广泛流行的软件设计模式。近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。MVC模式也逐渐在PHP和ColdFusion开发者中运用,并有增长趋势。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。2.1 MVC设计思想MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。2.2 什么是MVC(Model View Presenter)模式1、为了使得视图接口可以与模型和控制器进行交互,控制器执行一些初始化事件2、用户通过视图(用户接口)执行一些操作3、控制器处理用户行为(可以用观察着模式实现)并通知模型进行更新4、模型引发一些事件,以便将改变发告知视图5、视图处理模型变更的事件,然后显示新的模型数据6、用户接口等待用户的进一步操作这一模式的有一下几个要点:1、视图并不使用控制器去更新模型。控制器负责处理从视图发送过来的用户操作并通过与模型的交互进行数据的更新2、控制器可以和视图融合在一块。Visual Studion中对Windows Forms的默认处理方式就是这样的。【译注:比如我们双击一个Button,然后在它的事件里写处理逻辑,然后将处理的数据写回模型中。这里处理逻辑时间应该是控制器的功能,但是我们并没有专门写一个控制器来做这件事情而是接受了VS的默认处理方式,将它写在Form的代码中,而这里的Form在MVC中它就是一个View。所以这说vs默认的处理方式是将把控制器和视图融合在一起的。】3、控制器不包含对视图的渲染逻辑(rendering logic)2.2.1 “主动MVC”模式,也是通常意义下的MVC模式【译注:为什么说是主动的?View不是等Controller通知它Model更新了然后才从Model取数据并更新显示,而是自己监视Model的更新(如果用观察者模式)或主动询问Model是否更新。前面那种等待Controller通知的方式是下面所介绍的“被动MVC”的实现方式。】2.2.2 “被动MVC”模式与主动MVC的区别在于:1、模型对视图和控制器一无所知,它仅仅是被它们使用2、控制器使用视图,并通知它更新数据显示3、视图仅仅是在控制器通知它去模型取数据的时候它才这么做(视图并不会订阅或监视模型的更新)4、控制器负责处理模型数据的变化5、控制器可以包含对视图的渲染逻辑2.2.3 MVP模式与被动-MVC模式很接近,区别在于视图并不使用模型。在MVP模式中视图和模型是完全分离的,他们通过Presenter进行交互。Presenter与控制器非常相似,但是它们也有一些的区别:1、Presenter处理视图发送过来的用户操作(在MVC中视图自己处理了这些操作)2、它用更新过的数据去更新模型(在被动MVC中控制器只是通知视图去更新过的模型中去取新的数据,而主动MVC中模型通知视图去更新显示,控制器不需要做工作)3、检查模型的更新(与被动MVC一样)4、(与MVC的主要区别)从模型中取数据然后将它们发送到视图中5、(与MVC的主要区别)将所做的更新告知视图6、(与MVC的区别)用Presenter渲染视图2.3 MVC的优点大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。2.4 MVC的缺点MVC的设计实现并不十分容易, 理解起来比较容易,但对开发人员的要求比较高。MVC只是一种基本的设计思想,还需要详细的设计规划。模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误。经验表明,MVC由于将应用分为三层,意味着代码文件增多,因此,对于文件的管理需要费点心思。综合上述,MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图以及控制层, 使得你会认真考虑应用的额外复杂性,把这些想法融进到架构中,增加了应用的可拓展性。如果能把握到这一点,MVC模式会使得你的应用更加强壮,更加有弹性,更加个性化。3 构架、框架、设计模式之间的关系简述3.1 软件体系结构和框架的定义 软件体系结构的英文单词是“architecture”. Architecture的基本词义是建筑、建筑学、建筑风格。 软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。设计模式中对框架的定义是框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架的作用在于:由于提取了特定领域软件的共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在框架的基础上进行一些开发和调整便可满足要求;对于开发过程而言,这样做会提高软件的质量,降低成本,缩短开发时间,使开发越做越轻松,效益越做越好,形成一种良性循环。框架不是现成可用的应用系统。是一个半成品,需要后来的开发人员进行二次开发,实现具体功能的应用系统。框架不是“平台”,平台概念比较模糊可以是一种操作系统,一种应用服务器,一种数据库软件,一种通讯中间件等地那个,因此平台在应用平台主要指提供特定服务的系统软件,而框架更侧重了设计,开发过程,或者可以说,框架通过调用平台提供的服务而起的作用。框架不是工具包或者类库,调用API并不就是在使用框架开发,紧紧使用API是,开发者完成系统的主题部分,并不时地调用类库实现特定任务。而框架构成了通用的、具有一般性的系统主体部分,二次开发人员只是像做填空一样,根据具体业务,完成特定应用系统中与众不同的特殊部分。3.2 框架与架构之间的关系框架不是构架(即软件体系机构)。体系结构确定了系统整体结构、层次划分,不同部分之间的协作等设计考虑。框架比架构更具体。更偏重于技术涉嫌。确定框架后,软件体系结构也随之确定,而对于同一软件体系结构(比如Web开发中的MVC),可以通过多种框架来实现。3.3 框架与设计模式之间的关系设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。框架和设计模式存在着显著的区别,主要表现在二者提供的内容和致力应用的领域。1)、从应用领域上分,框架给出的是整个应用的体系结构;而设计模式则给出了单一设计问题的解决方案,并且这个方案可在不同的应用程序或者框架中进行应用。2)、从内容上分,设计模式仅是一个单纯的设计,这个设计可被不同语言以不用方式来实现;而框架则是设计和代码的一个混合体,编程者可以用各种方式对框架进行扩展,进而形成完整的不同的应用。3)、以第二条为基础,可以得出设计模式比框架更容易移植:框架一旦设计成形,虽然还没有构成完整的一个应用,但是以其为基础进行应用的开发显然要受制于框架的实现环境;而设计模式是与语言无关的,所以可以在更广泛的异构环境中进行应用。总之,框架是软件,而设计模式是软件的知识体,提升框架的设计水平。4 动软功能介绍4.1 动软简介动软.Net代码生成器( Codematic )是一款为C#数据库程序员设计的自动代码生成器。1 借助动软( Codematic ),可以自动生成基于面向对象的思想和三层架构设计的软件代码。这些程序代码结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。2 借助动软( Codematic ),数据库管理功能和多项其他开发工作中常用到的辅助工具功能。这些功能有:l 连接数据库;l 查看数据库的表结构;l 生成基本SQL语句;l 生成存储过程;l 生成数据库脚本SQL;l 将数据库表结构导入到word文件中;4.2 动软功能:生成基于三层架构的软件代码4.2.1 生成代码项目 操作菜单: 操作选项: 显示结果:4.2.2 代码批量生成 操作步骤 操作菜单: 操作选项: 显示结果:4.2.3 代码生成器 操作菜单: 操作选项: 显示结果:using System;using System.Reflection;using System.Configuration;using GM3G.IDAL.BJDM;namespace GM3G.DALFactory/ / 抽象工厂模式创建DAL。/ web.config 需要加入配置:(利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口) / DataCache类在导出代码的文件夹里/ / (这里的命名空间根据实际情况更改为自己项目的命名空间)/ / public sealed class DataAccessprivate static readonly string AssemblyPath = ConfigurationManager.AppSettingsDAL;/ / 创建对象或从缓存获取/ public static object CreateObject(string AssemblyPath,string ClassNamespace)object objType = DataCache.GetCache(ClassNamespace);/从缓存读取if (objType = null)tryobjType = Assembly.Load(AssemblyPath).CreateInstance(ClassNamespace);/反射创建DataCache.SetCache(ClassNamespace, objType);/ 写入缓存catchreturn objType;/ / 创建DAL_Inventory数据层接口/ public static GM3G.IDAL.BJDM.IDAL_Inventory CreateDAL_Inventory()string ClassNamespace = AssemblyPath +.BJDM.DAL_Inventory;object objType=CreateObject(AssemblyPath,ClassNamespace);return (GM3G.IDAL.BJDM.IDAL_Inventory)objType;4.3 动软功能:辅助功能 4.3.1 连接数据库; 操作菜单: 操作选项: 显示结果:4.3.2 查看数据库的表结构; 操作菜单: 显示结果:4.3.3 生成基本SQL语句; 操作菜单: 显示结果:SELECT SuppId,Name,Status,Addr1,Addr2,City,State,Zip,Phone FROM SupplierUPDATE Product set ProductId = ,CategoryId = ,Name = ,Descn = ,Image = WHERE DELETE FROM Product WHERE INSERT INTO Product ( ProductId ,CategoryId ,Name ,Descn ,Image ) VALUES (ProductId,CategoryId,Name,Descn,Image)4.3.4 生成存储过程; 操作菜单: 显示结果:/* 表名:Product* 时间:2009-6-18 18:05:55* Made by Codematic */if exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_Exists) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_ExistsGO-用途:是否已经存在 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_ExistsASDECLARE TempID intSELECT TempID = count(1) FROM Product WHERE IF TempID = 0RETURN 0ELSERETURN 1GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_ADD) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_ADDGO-用途:增加一条记录 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_ADDProductId varchar(10),CategoryId varchar(10),Name varchar(80),Descn varchar(255),Image varchar(80) AS INSERT INTO Product(ProductId,CategoryId,Name,Descn,Image)VALUES(ProductId,CategoryId,Name,Descn,Image)GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_Update) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_UpdateGO-用途:修改一条记录 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_UpdateProductId varchar(10),CategoryId varchar(10),Name varchar(80),Descn varchar(255),Image varchar(80) AS UPDATE Product SET ProductId = ProductId,CategoryId = CategoryId,Name = Name,Descn = Descn,Image = ImageWHERE GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_Delete) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_DeleteGO-用途:删除一条记录 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_Delete AS DELETE ProductWHERE GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_GetModel) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_GetModelGO-用途:得到实体对象的详细信息 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_GetModel AS SELECT ProductId,CategoryId,Name,Descn,ImageFROM ProductWHERE GOif exists (select * from dbo.sysobjects where id = object_id(Ndbo.UP_Product_GetList) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure dbo.UP_Product_GetListGO-用途:查询记录信息 -项目名称:3G-说明:-时间:2009-6-18 18:05:55 -CREATE PROCEDURE UP_Product_GetList AS SELECT ProductId,CategoryId,Name,Descn,ImageFROM ProductGO4.3.5 生成数据库脚本SQL; 操作菜单: 显示结果:if exists (select * from sysobjects where id = OBJECT_ID(Category) and OBJECTPROPERTY(id, IsUserTable) = 1) DROP TABLE CategoryCREATE TABLE Category (CategoryId varchar (10) NOT NULL,Name varchar (80) NULL,Descn varchar (255) NULL)INSERT Category (CategoryId,Name,Descn) VALUES ( BIRDS,Birds,Birds)INSERT Category (CategoryId,Name,Descn) VALUES ( BUGS,Bugs,Bugs)INSERT Category (CategoryId,Name,Descn) VALUES ( BYARD,Backyard,Backyard)INSERT Category (CategoryId,Name,Descn) VALUES ( EDANGER,Endangered,Endangered)INSERT Category (CategoryId,Name,Descn) VALUES ( FISH,Fish,Fish)4.3.6 将数据库表结构导入到word文件中; 操作菜单: 操作选项: 显示结果:数据库名:MSPetShop4表名:Product序号列名数据类型长度小数位标识主键允许空默认值说明1ProductIdvarchar10否2CategoryIdvarchar10否3Namevarchar80是4Descnvarchar255是5Imagevarchar80是5 基于工厂模式的三层架构的软件代码5.1 相关目标掌握动软的基本操作掌握新建解决方案项目实现增删改查5.2 项目准备sql server 2005 +sp2(SQL版)安装以下软件ftp上有所需文件visual studio 2008 +sp1动软.Net 代码生成器Enterprise Library May 2007.msi5.3 相关操作5.3.1 利用SQL-Server2005建立数据库(操作略)5.3.2 利用动软生成工厂模式三层架构 连接数据库1.点击【新增服务器注册】,如图:2.选择【SQL Server】,点击【下一步】,如图:3.更改登录方式为【Windows身份认证】,点击【确定】如图:连接成功,如图所示 配置动软的相关参数1.点击【工具】-【选项】,然后进行如下图所示的设置:2.修改命类名规则 生成代码项目1.选择需要生成项目的数据库2.点击常用操作中的生成代码项目,如图: 3.选择【工厂模式结构】,如图:4.选择“Customer表”,调整相应参数,如图: 生成批量代码1.选择需要生成项目的数据库2. 点击常用操作中的代码批量生成器,如图:3.选择“Customer表”,调整相应参数,如图:生成如下下文件:将批量生成代码的文件Copy到前面生成代码项目的文件中夹中,将其覆盖,(除DALFactory文件夹不覆盖)最后打开解决方案,在VS中如下图所示:5.3.3 引用命名空间1.UI-BLL,Model2.BLL-【DAL】,Model3.DAL-Model,企业库【.data .common .objectbuilder】【备注: 1.显示所有层的隐藏文件,包含bin文件,自己的项目文件夹; 2.将Web层设为启动项,其中一张网页设为启动页; 3.在数据源配置完后,进行生成解决方案,根据提示提示注释相关内容】5.3.4 配置数据源我们可以通过微软“企业库”提供的工具,在文件“Webconfig”中配置相关数据源。1. 右击【Webconfig】,如图所示:2. 点击【打开方式】,选择【Enterprise Library Configuration】如图所示;3. 在Connection String选项中敲入数据库连接字符串,如图所示:4. 选择【Data Access Application Block】,如图所示:5. 将选区框下的DefaultDatabase项改成Connection String,如图所示:6. 打开Webconfig,在如图所示的位置内容改成如图所示,即:改成GM3G(命名空间)5.3.5 创建Select页面1.添加一个Web内容窗体Select页面(动软已经自动生成Show,Modify,Delete页面),如下图所示:2.Web层生成如下文件:3. 从工具箱中拖取Gridview控件,如下所示:4.对Gridview控件进行格式设置和数据绑定,如下所示:5.对动态按钮进行数据绑定和值的传送设置,如下所示:绑定结果如下所示: 代码示例:protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) BLL_Public.BindGriw(bll.GetAllList(), GV_cus); /利用公共类绑定 protected void Button1_Click(object sender, EventArgs e) string strWhere = Tex_com.Text.Trim(); GV_cus.DataSource = bll.GetList(strWhere); GV_cus.DataBind(); 5.3.6 实现Show功能Show页面的作用是显示用户所要查看的信息,那么我们只要根据用户从Select页面发来的指令就可以了。由此我们需要在这一页面中编写接收代码。代码示例: protected void Page_Load(object sender, EventArgs e)if (!Page.IsPostBack)if (Request.Params客户id != null & Request.Params客户id.Trim() != )string ID = Request.Params客户id; /;利用动态按钮传值 int id = int.Parse(ID); ShowInfo(id);5.3.7 实现Modify功能Medify页面的作用是修改用户所需修改的信息,那么也是需要根据用户从Select页面发来的指令。由此我们需要在这一页面中编写接收代码。代码示例:protected void Page_Load(object sender, EventArgs e)if (!Page.IsPostBack) lbl客户ID.Text = Session客户ID.ToS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论