动软.NET代码生成器生成三层架构
- 格式:doc
- 大小:1.73 MB
- 文档页数:16
【开发】.NET三层架构简单解析这篇⽂章本来应该很早就写出来的,但是⼀直苦于⾃⼰的精神能⼒有限,⽽且已经到了我们学校的考试周,所以时间上还是有点紧迫。
关键的⼀点就是,找不到合理的思路来写,思路没有的话,就算是再好的素材,也写不来⼤家喜欢的⽂章。
之前已经写过关于.NET三层架的两篇⽂章了,⼀篇是和。
如果⼤家有兴趣的话,可以去读⼀读。
当然了,这两篇⽂章的内容,⼤部分都不是⾃⼰的,⾃⼰也是看了别⼈的博⽂,然后⾃⼰总结⼀下,拿过来⾃⼰⽤罢了。
这次的⽂章主要是⾃⼰亲⾃使⽤这些知识做了⼀个项⽬(我们学校资环学院的院⽹站),然后拿出来跟⼤家分享⼀下。
也不要期望博主能够写出多么有⽔平的⽂章,我还是学⽣(⼤三),我也是在学习的过程中,写博客之不过是想记录⾃⼰学习过程中的点滴和记录⾃⼰的进步,如果能够顺便的帮助别⼈学习就更好了。
同时也希望⼤家能够多给我提意见。
⾮常感谢 @ ,@,@ 等博友给我提出的宝贵的修改意见。
也希望⼤家在阅读本博⽂的时候,如果有什么问题,或者疑问及时的给我留⾔沟通,⼤家⼀起探讨。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------对于三层架构来说,主要是使⽤设计模式的思想,对于项⽬的各个模块实现"⾼内聚,低耦合"的思想。
这⾥就不做详细的介绍了,如果⼤家有兴趣,可以阅读软件⼯程和设计模式相关⽂章。
对于三层架构来说,就是使⽤类,把我们在做项⽬的过程中,可能需要反复操作数据库,反复的使⽤某个⽅法等等,可能就是操作的参数不同。
如果我们如果在每次使⽤的时候,都去编写相应的代码,⽆疑会增加程序员的负担。
的三层架构(DAL,BLL,UI)BLL 是业务逻辑层Business Logic LayerDAL 是数据访问层Data Access Layer的三层架构(DAL,BLL,UI)图形表示三层结构. 其中web即为USL层web –> bll –> dal| | || V |+–> model <—+一、三层体系架构1.表示层(USL):主要表示WEB方式,也可以表示成WINFORM方式。
如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
2.业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。
如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3.数据访问层(DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.二、具体区分1.表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
2.业务逻辑层:主要负责对数据层的操作,也就是说把一些数据层的操作进行组合。
3.数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作,而不必管其他操作。
三、总结三层结构是一种严格分层方法,即数据访问层(DAL)只能被业务逻辑层(BLL)访问,业务逻辑层只能被表示层(USL)访问,用户通过表示层将请求传送给业务逻辑层,业务逻辑层完成相关业务规则和逻辑,并通过数据访问层访问数据库获得数据,然后按照相反的顺序依次返回将数据显示在表示层。
有的三层结构还加了Factory、Model等其他层,实际都是在这三层基础上的一种扩展和应用.一个简单的三层结构程序一般包括DAL BLL WEB Model几个项目,它们的相互引用关系如下1) WEB引用BLL,Model2)BLL引用DAL,Model3)DAL引用Model4)Model无引用一提三层架构,大家都知道是表现层(UI),业务逻辑层(BLL)和数据访问层(DAL),而且每层如何细分也都有很多的方法。
T4模板⽣成三层架构1、T4 Editor安装T4:根据模板⽣成⽂件,例如model等vs中默认t4模板编码是没有提⽰和⾼亮的,需使⽤以下插件,免费的也可以在vs的“⼯具->扩展和更新”中搜索t4,然后下载注意:安装的时候请先关闭vs,然后再安装2、T4简单使⽤输⼊⼀段t4代码<#@ template debug="false" hostspecific="false" language="C#" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="System.Collections.Generic" #><#@ output extension=".cs" #>using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace t4ceshi{public class User{///<summary>///⽤户ID///</summary>public int UserID { get; set; }///<summary>///⽤户名///</summary>public string UserName { get; set; }///<summary>///密码///</summary>public string Password { get; set; }///<summary>/// Email///</summary>public string Email { get; set; }///<summary>///⼿机号///</summary>public string Mobile { get; set; }}}View Code输⼊完成后保存就会⾃动⽣成⼀个类⽂件3、利⽤T4 根据数据库⽣成三层架构例如T4⽣成Model⽣成model时不⽤⾃⼰写代码,使⽤微软dbfirst模式⽣成model,原理也是t4搞定,⾃动⽣成⼀个Model.edmx,⾥边就有所有表的对应的实体例如T4⽣成DAL所有dal⽣成到⼀个类⽂件中,输⼊下边代码然后保存就会⾃动⽣成1个类⽂件(建议使⽤此⽅法,如需扩展新建类即可)dal.tt代码<#@ template language="C#" debug="false" hostspecific="true"#><#@ include file="EF6.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#const string inputFile = @"../cms.Model/Model.edmx"; var textTransform = DynamicTextTransformation.Create(this); var code = new CodeGenerationTools(this); var ef = new MetadataTools(this); var fileManager = EntityFrameworkTemplateFileManager.Create(this); EdmMetadataLoader loader=new EdmMetadataLoader(textTransform.Host, textTransform.Errors); EdmItemCollection itemCollection = (EdmItemCollection)loader.CreateEdmItemCollection(inputFile); #>using cms.Model;namespace cms.DAL{<#foreach(EntityType entity in itemCollection.GetItems<EntityType>().OrderBy(e => )){#>public partial class <#=#>DAL : BaseDAL<<#=#>>{}<#}#>}<#+public static void ArgumentNotNull<T>(T arg, string name) where T : class{if (arg == null){throw new ArgumentNullException(name);}}#>如果想⼀个表对应⼀个类⽂件,请使⽤下边代码,保存后⾃动⽣成多个类⽂件<#@ template language="C#" debug="false" hostspecific="true"#><#@ include file="EF6.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#const string inputFile = @"../cms.Model/Model.edmx"; var textTransform = DynamicTextTransformation.Create(this); var code = new CodeGenerationTools(this); var ef = new MetadataTools(this); var fileManager = EntityFrameworkTemplateFileManager.Create(this); EdmMetadataLoader loader=new EdmMetadataLoader(textTransform.Host, textTransform.Errors); EdmItemCollection itemCollection = (EdmItemCollection)loader.CreateEdmItemCollection(inputFile); #><#foreach(EntityType entity in itemCollection.GetItems<EntityType>().OrderBy(e => )){fileManager.StartNewFile( + "DAL.cs");#><#//代码⽚段开始#>using cms.Model;namespace cms.DAL{public partial class <#=#>DAL : BaseDAL<<#=#> >{//扩展⽅法添加在这⾥//public IEnumerable<<#=#> > AddRange(IEnumerable<<#=#> > entities) //{// dbContext.Set<<#=#> >().AddRange(entities);// dbContext.SaveChanges();// return entities;//}}}<#//代码⽚段结束#><#fileManager.EndBlock();}#><#fileManager.Process();#><#+public static void ArgumentNotNull<T>(T arg, string name) where T : class{if (arg == null){throw new ArgumentNullException(name);}}#>例如T4⽣成BLL代码同上,把dal修改为bll即可。
动软.ne代码生成器搭建三层架构(转)手把手教你怎么用从暑假里面开始接触学习.NET,由于实际需求,必须一开始就从三层架构开始。
于是进入了痛苦的.NET 三层架构学习。
可能我们学校学生很少有在毕业前在学校用三层架构做东西的,所以我准备给大家来个简单的三层架构实践部署入门。
我就从我自己开发的“波Blog” 作为实例开发环境及其使用工具:动软.net代码生成器2.17版本VsualStudio 2008SQL Server2000 数据库ER studio 数据库建模工具好我们开始:从最基本的,首先在ERstudio 里面把我的系统的数据库设计好,先设计好逻辑模型(Logical Model)完成数据库逻辑模型后,我们用ERstudio 生成实体模型(Physic Model)最后链接生SQL Server成我们的数据库Bo_Blog,由于重点在后面,我就不一一演示ER Studio 怎么使用了打开动软.NET代码生成器,在右上选择添加SQL Server 2000 服务器选择数据库类型,我们这里是SQL 2000填写数据库据连接信息链接成功数据库后,我们会看见右边栏变成了和我们SQL Server 企业管理器一样的数据库表列表我们选择我们项目用的Bo_Blog 数据库,选择中间的选项的生成代码项目然后选择简单三层架构,填写好极为据我方案名称,这里我写的是MyBlog,选择保存路径,这里我保存在桌面然后选择数据库 Bo_Blog 然后会在左边列出数据库的所有表我们把所有表添加到右边框里面来在这里我们要设置一下,我们在解决方案中各个项目里面的命名空间,这里我把所有的命名空间都设置为MyBlog ,其他选择默认,点击开始生成这样会自动生成整个三层架构的解决方案但是这样生成的整个解决方案是不能通过VS 2008 编译通过的,会报很多错误,我们得经行精简和修改接下来按照我说的做打开生成的解决方案,删除里面的所有以 .sln .csproj 和er 结尾的文件和properties里面的AssemblyInfo.cs文件,删除整个Web文件夹,只保留Lib 文件夹里面的mon.dll 文件,DBUtility 文件夹里面的DbHelperSQL.cs文件,我们另外在原文件夹中新建解决方案,然后自己把Model BLL DAL DBUtility Lib 类库项目按照下面方法附加到我们新建的解决方案中添加方式见下面步骤,我们新建解决方案Bo_Blog 在桌面上注意在VS 创建项目的时候,选择.NET FrameWork 2.0 的这里我们,路径选择在桌面一个 Web应用程序项目然后我们分别把原来我们生成和整理后的BLL DAL Model Lib DBUtility 下的文件对应的拷贝到我们新建解决方案的相对应的文件夹下面拷贝完成后,我们在现在的解决方案中,选中一个项目,然后选中解决方案属性上面的显示所有文件按钮,这样就会在下面出现我们赋值过来的文件,用虚线表示的,然后我们按住Ctrl全部选中他们,鼠标右键选择“包括到项目中”,就这样,我们就吧他们附加到这个类库项目中了就这样,我们把其他文件都附加到DAL,Lib,Model,DBUtility 项目中去。
自动生成C#代码功能介绍一键自动生成各种C#代码,可以节省大量的时间来做业务逻辑的代码,那些重复的代码就交给它去做吧,1分钟生成一个架构所有的基本代码。
有了它开发项目的效率简直轻松多了。
∙可以生成3种不同架构的代码:简单三层结构;基于工厂模式三层架构;自定义结构模版∙可以生成页面Html代码和页面.cs处理代码∙支持父子表的(事务)的代码生成∙可以自定义选择生成的字段∙可以自由设定命名空间和实体类名∙自动生成方法属性注释∙支持对表和视图的代码生成∙支持对多种类型数据库生成代码:如SQLServer2000/2005,Oracle,OleDb等∙可以生成3种不同类型数据层: 基于SQL字符串方式,基于Parameter方式和基于存储过程方式的数据层数据库服务器管理类似SQLServer2005的管理界面,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之间的来回切换,方便快捷。
∙可支持SQL Server2000/2005、Oracle、OleDb三种类型的数据库同时管理。
∙可以轻松浏览库,表,视图,存储过程的结构信息.∙可以查看存储过程和视图的定义脚本。
∙表的重命名,删除操作。
查询分析器实现类似SQLServer2005的查询分析器的功能,方便编写代码时想进行数查询。
∙实现执行选中部分SQL语句。
∙实现关键字高亮。
∙支持F5快捷键执行语句。
∙实现打开现有脚本,保存当前脚本功能。
∙实现错误检测提示功能。
自动生成存储过程和SQL脚本∙可以自动生成表的创建脚本。
∙可以自动生成表数据的插入脚本。
∙可以自动生成增、删、改、查等操作的存储过程脚本。
∙可以根据选定的数据库和表,进行多选批量生成。
∙支持在当前生成和导出脚本文件功能。
自动生成数据库文档可以根据选定的数据库和表(可批量生成),可以生成字段的详细信息,包括默认值,描述等信息.生成相应的表结构文档,免去手工写文档和操作的麻烦。
.net网页开发中的三层架构1.用VS新建一个网站2.在上面创建的项目的解决方案上右键“添加”-“新建项目”-“类库”。
创建两个类库Bll(业务逻辑层)和Dal(数据访问层)。
3.自此,以上两层和第一步中建立的网页(表示层)组成了一个网站的三层架构。
4.首先编写Dal数据访问层的代码,其中用到了数据库的连接,在建立SqlConnection对象的时候,需要用到连接字符串,为了得到连接字符串,我们可以采用如下步骤:(1)在网站页面中拖入一个SqlDataSource控件(2)配置它的数据源->新建连接(3)配置连接(4)此时按确定后返回即可看到连接字符串代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient; //导入这个命名空间,用于连接数据库namespace Dal{public class UserInfo{///<summary>///数据访问层中添加用户信息///</summary>///<param name="UserLogin">用户登陆名</param>///<param name="UserPsw">用户登陆密码</param>///<param name="UserName">用户姓名</param>///<param name="UserRemark">用户备注</param>///<returns>数据库中受影响的行数</returns>public static int AddUserDal(string UserLogin, string UserPsw,string UserName, string UserRemark){//与数据库建立一个连接SqlConnection conn = new SqlConnection("Data Source=10.70.9.171;Initial Catalog=test;User ID=sa");//打开数据库conn.Open();//利用一个现有连接创建一个Command,用以执行sql指令SqlCommand cmd = conn.CreateCommand();//给Cmmand写入sql语句mandText = "insert into UserInfo values('" +UserLogin.ToString() + "','" + UserName.ToString() + "','" +UserPsw.ToString() + "','" + UserRemark.ToString() + "')";//执行sql指令并返回受影响的行数return cmd.ExecuteNonQuery();}}}5.编写Bll,既业务逻辑层的代码。
三层结构的三层是指表示层、业务逻辑层、数据访问层。
表示层:位于最外层,离用户最近,用于显示数据和接受用户输入的数据,为用户提供一种交互式操作界面。
表示层一般为Windows应用程序或Web应用程序。
业务逻辑层:是表示层和数据访问层之间通信的桥梁,主要负责数据的传递和处理,例如数据有效性的检验、业务逻辑描述相关功能。
业务逻辑层通常为类库。
数据访问层:主要实现对数据的保存和读取操作。
数据访问,可以访问关系数据库、文本文件或是XML文档。
数据访问层通常为类库。
在三层结构中,各层之间相互依赖:表示层依赖于业务逻辑层,业务逻辑层依赖于数据访问层。
在三层结构中,各层之间的数据传递方向分为请求与响应两个方向:表示层接受用户的请求,根据用户的请求去通知业务逻辑层,业务逻辑层收到请求,首先对请求进行阅读审核,然后将请求通知数据访问层或直接返回给表示层,数据访问层收到请求后便开始访问数据库;数据访问层通过对数据库的访问得到请求结果,并把请求结果通知业务逻辑层,业务逻辑层收到请求结果,首先对请求结果进行阅读审核,然后将请求结果通知表示层,表示层收到请求结果,并把结果展示给用户。
使用实体类构建三层结构实体类,简单地说是描述一个业务实体的类,业务实体直观一点理解就是整个应用系统业务所涉及的对象,从数据存储来讲,业务实体救是存储应用系统信息的数据表,我们将每一个数据表中的字段定义成属性,并将这些属性用一个类封装,这个类就是实体类。
业务实体可以认为属于业务逻辑层,当然,可以将业务实体单独作为一层,称为业务实体层。
表示层、业务逻辑层、数据访问层都依赖于业务实体。
各层之间数据的传递主要是实体对象(业务信息封装在实体对象中)。
博客系统数据库:创建数据库MyBlog、用户表Users、日志信息表Articles、评论信息表Comments创建空白解决方案Blog.sln添加类库BlogModels(模型层),分别添加User.cs、Article.cs、Comment.cs(与数据库中的表一一对应)1:6:using System;7:using System.Collections.Generic;8:using System.Text;9:10:namespace BlogModels11:{12://实体类前面一般加上序列化属性,它会对实体类中的所有字段、属性进行序列化处理。
“志远”项目开发培训教材——三层架构及代码生成工具介绍电子信息产业园二〇一〇年一月文档修订(记录批准之后的变更情况)目录1软件架构 (4)1.1三层架构简介 (4)1.2分层式结构的优势和缺点 (5)1.3应用程序框架 (6)1.4三层架构的实践应用 (8)1.5三层架构案例项目:Petshop (11)2MVC设计模式 (13)2.1 MVC设计思想 (13)2.2什么是MVC(Model View Presenter)模式 (14)2.3 MVC的优点 (17)2.4 MVC的缺点 (18)3构架、框架、设计模式之间的关系简述 (19)3.1软件体系结构和框架的定义 (19)3.2框架与架构之间的关系 (19)3.3框架与设计模式之间的关系 (19)4动软功能介绍 (21)4.1动软简介 (21)4.2动软功能:生成基于三层架构的软件代码 (21)4.3动软功能:辅助功能 (29)5基于工厂模式的三层架构的软件代码 (40)5.1相关目标 (40)5.2项目准备 (40)5.3相关操作 (41)5.4案例说明:插入数据(insert) (54)5.5案例说明:修改数据(update) (64)5.6案例说明:编辑数据(select) (68)5.7案例说明:编辑数据(delet) (70)1 软件架构1.1 三层架构简介三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。
此模型将应用程序划分为三个层次,如下图所示:1.表示层(用户界面层):表示层:是系统的UI部分,负责使用者与整个系统的交互,即负责处理用户的输入和向用户输出。
在这一层中,理想的状态是不应包括系统的业务逻辑,有时候出于对效率的考虑,这一层可能会在向上传输用户输入之前进行合法性验证。
表示层中的逻辑代码,仅与界面元素有关。
通常采用前端工具(如VB、VC 和Java)开发。
在PetShop中,是利用来设计的,因此包含了许多Web控件和相关逻辑。
动软代码⽣成器三层⽤于winformDBUtility项⽬中的DbHelperSQL.cs (找⾃⼰对应的数据库类型)修改前20⾏中的数据库连接字符串获取⽅式为://数据库连接字符串(web.config来配置),多数据库可使⽤DbHelperSQLP来实现.// public static string connectionString = PubConstant.ConnectionString;//配置winform的获取⽅法public static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 并在应⽤层添加app.config<?xml version="1.0"?><configuration><configSections></configSections><connectionStrings><add name="ConnectionString" connectionString="Data Source=server;Initial Catalog=Database;User ID=sa;Password=sa" providerName="System.Data.SqlClient"/></connectionStrings><startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><runtime><legacyUnhandledExceptionPolicy enabled="true"/></runtime></configuration> 还有另⼀说:动软代码⽣成器默认是⽣成 项⽬。
软件开发的3层架构和多层架构的概念详解1 :三层架构:1)数据访问层:DAL:用于实现与数据库的交互和访问,从数据库猎取数据或保存数据到数据库的部分。
2)业务规律层:BLL:业务规律承上启下,用于对上下交互数据进行规律处理,实现业务目标。
3)表示层:Web主要实现和用户的交互,接受用户或返回用户恳求的数据结果的呈现,而详细的数据处理则会交给业务规律层和数据访问层去处理。
4)业务实体Modeh用于封装实体类数据结构,一般用于映射数据库的数据表或视图,用以描述业务中客观存在的对象。
Model分别出来时为了更好地解耦,更好的发挥分层、复用、扩展增加敏捷性。
5)通用Common:通用的帮助工具类(数据校验、加密解密、缓存处理等)6)数据库访问类时对ADONET的封装,封装了一些常用的重复的数据库操作。
微软的企业库SQLHelper.cs,为DAL供应访问数据库的帮助工具。
数据摩2:三层架构:(高)内聚:一个模块内各个元素彼此相关联的紧密程度(低)耦合:软件结构内不同模块之间依靠程度的度量。
优点1:三层结构将表示部分和业务规律部分根据客户层和应用服务器分别,客户端和应用服务㈱、应用服务器和数据库服务器之间的通信以及异构平台之间的数据交换都可以通过中间件或者相关程序来实现。
复用降低、周期缩短、维护便利。
优点2:分层结构将数据访问和规律操作都集中到组件中,增加了系统的复用性。
CS. BS 系统通用底层。
不管是、WINFORM、VVebService优点3:系统的扩展性大大增加。
缺点:分层多开发工作量大。
数据不直接提取降低性能。
级联修改,表示层增加一个功能。
3:三层架构实例演示:1:新建》项目分其它类型项目今ViSUaIStlIdi。
解决方案今保存:2:解决方窠今添加》新建项目)其它语言Visual C#今类库3:详细项目)属性6程序集名称+默认命名空间程序集名称:指定将包含程序集清单的输出文件的名称,即最终生成的文件名。
.NET三层架构的基本思想和实现方式前面我们编写的示例(demo)应用程序,由于功能比较简单,所有的代码都放在一起,没有涉及到任何分层的概念。
对于简单的应用程序,那样的处理尚能接受,但是对于一个大型的应用系统来说,如果所有的代码都放在一起,既不利于以后功能扩展,也没有任何灵活性可言。
.NET编程语言借鉴了Java的MVC的思想,产生了三层架构体系。
三层体系结构,是在客户端与数据库之间加入了一个"中间层"。
这里所说的三层体系,不是指物理上的三层,是指逻辑上的三层,是一种体系结构,它是源自并优化了经典体系模式MVC模式的产物。
使用三层结构创建的应用系统,由于层与层之间的低耦合、层内部的高内聚,使得解决方案的维护和增强变得更容易。
采用分层设计的软件可维护性、可重用性、可伸缩性都比较好三层架构中的三层是指:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。
+ 实体层UI user interface表示层:主要是指与用户交互的界面,用于显示数据和接收用户输入的数据,将用户输入的数据传递给业务逻辑层,一般不包含任何实际的业务处理,当业务逻辑层的数据发生变化时,表示层就会显示出更新的结果。
表示层提供应用程序的用户界面,通常为Windows应用程序或Web应用程序。
BLL business logic layer业务逻辑层:是表示层和数据访问层之间的桥梁,它代表应用程序的核心功能,负责处理数据层的数据,实现业务逻辑。
业务逻辑层通常为类库。
DAL data access layer数据访问层:主要实现对数据的保存和读取操作,将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库中。
数据访问层可以访问关系数据库、文本文件或者XML文档,通常为类库。
三层架构搭建好之后,有一个问题需要解决,使用什么在三层之间传递数据呢?目前通用的解决方法有两种:一种是使用实体类在三层之间传递数据,一种是使用DataSet DataTable 在三层之间传递数据。
(1).netc#⼀步⼀步⾃⼰写三层代码⽣成器(主界⾯及连接数据库界⾯){转}⾃⼰动⼿写代码⽣成器(主界⾯及连接sql数据库读取数据库和数据库中的表)(1)打开visual studio 建⽴winfrom项⽬,⾸先建⽴主界⾯如下图⽬前⽤到了两个个控件:⼀个上⽅的"连接服务器"button按钮(点击时弹出连接sql服务器对话框),⼀个treeview控件(显⽰从sql服务器中读取到的数据库及数据库中的表)(2)建⽴连接服务器界⾯。
如下图:服务器地址:combox 有两个item ⼀个是.⼀个是127.0.0.1代表连接本机的sql服务器.⾝份验证:有两个选项:sql⾝份验证和windows⾝份验证。
当选择sql⾝份验证时将下⾯的⽤户名和密码textbox 设置为可⽤代码如下在⾝份验证combxo的SelectedIndexChanged事件中写如下代码:if (cmbconType.SelectedItem.ToString() != "SQL SERVER⾝份验证"){label3.Enabled = false;label4.Enabled = false;txtpwd.Enabled = false;txtusername.Enabled = false;}else{label3.Enabled = true;label4.Enabled = true;txtpwd.Enabled = true;txtusername.Enabled = true;}最下⾯的显⽰数据库的combox默认是不可⽤的enabled=false;⽽且显⽰服务器地址的combox默认选中.也就是本机。
在窗体的load中写如下代码:private void conserver_Load(object sender, EventArgs e){label5.Enabled = false;cmbdatabase.Enabled =false; //显⽰数据库的combox在窗体载⼊时设置为不可⽤。
.net三层架构创建
一、打开VS2008,新建空的解决方案,具体如下:
1、文件→新建→项目
2、展开其它项目类型→Visual Studio解决方案→空白解决方案
3、起一个名字,并确定(如下图)
4、在解决方案资源管理器里面右键点击解决方案→添加→新建项目→类库,在名称里输入Model
5、同样的方法,再新建BLL和DAL两个类库
6、在解决方案资源管理器里面右键点击解决方案→添加→新建项目(或者新建网站)→ web 应用程序
PS:小型站点,点“新建网站”;大一点的,用web应用程序。
新建网站和新建web应用程序,在编译发布之后会有不同的效果:
新建网站在编译发布后,bin目录下,会为每个aspx页面生产一个随机命名的.dll文件,默认情况下,添加的cs文件都会放到App_Code目录管理;
新建web应用程序编译发布会,在bin目录下,只生成当前项目的dll文件.
建好文件目录已经建好了,如下图。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
.net三层架构构建
1.使用SQL SERVER 附加好你的数据库如图所示:
2..打开动软.Net代码生成器配置好数据库,右键单击你要附加的数据库名称选择:新建NET 项目。
如图所示:
选择简单三层结构,保存位置随意,后点击下一步
选择需要生产的表到右边选区,点击生产按钮。
3.打开VS软件新建一个网页。
在解决方案除右键点击选择:添加-新建项目-选择类库并命名。
同上方法新建
BLL,DAL,MODEL,DBUtility 4个类库,如图所示:
4. 回到动软生产的代码文件哪里。
复制相对应的文件夹下的对应数据库中表名文件到你在VS 中新建好的类库(BLL DAL MODEL), 并且把动软生产的LIB文件复制到你的网站下(里面包含一些必要的引用),复制DBUtility文件夹下的(如图所示文件到VS 的DBUtility
类库下)
Maticsoft. 这个字段使用编辑中的快速替换功能选择整个解决方案替换成空如图所示。
下一步是为每一个类库添加引用,每个类库的引用如下:
以上步骤都完成后,在站点添加BLL引用并且在解决方案使用批生成
重新生产解决方案
至此:一个完整的三层架构就完成了。
打开动软.NET代码生成器,在右上选择添加SQL Server 2000 服务器
选择数据库类型,我们这里是SQL 2000
填写数据库据连接信息
链接成功数据库后,我们会看见右边栏变成了和我们SQL Server 企业管理器一样的数据库表列表
我们选择我们项目用的Bo_Blog 数据库,选择中间的选项的生成代码项目
然后选择简单三层架构,填写好极为据我方案名称,这里我写的是MyBlog,选择保存路径,这里我保存在桌面
然后选择数据库Bo_Blog 然后会在左边列出数据库的所有表
我们把所有表添加到右边框里面来
在这里我们要设置一下,我们在解决方案中各个项目里面的命名空间,这里我把所有的命名空间都设置为MyBlog ,其他选择默认,点击开始生成
这样会自动生成整个三层架构的解决方案
但是这样生成的整个解决方案是不能通过VS 2008 编译通过的,会报很多错误,我们得经行精简和修改
接下来按照我说的做
打开生成的解决方案,删除里面的所有以.sln .csproj 和er 结尾的文件和properties里面的AssemblyInfo.cs文件,删除整个Web文件夹,只保留Lib 文件夹里面的mon.dll 文件,DBUtility文件夹里面的DbHelperSQL.cs文件,我们另外在原文件夹中新建解决方案,然后自己把Model BLL DAL DBUtility Lib 类库项目按照下面方法附加到我们新建的解决方案中
添加方式见下面步骤
我们新建解决方案Bo_Blog 在桌面上
注意在VS 创建项目的时候,选择.NET FrameWork 2.0 的这里我们,路径选择在桌面
创建新的解决方案后,我们在解决方案中新建BLL , DAL , DBUtility ,Lib,Model 五个类库项目,建立一个 Web应用程序项目
然后我们分别把原来我们生成和整理后的BLL DAL Model Lib DBUtility 下的文件对应的拷贝到我们新建解决方案的相对应的文件夹下面
拷贝完成后,我们在现在的解决方案中,选中一个项目,然后选中解决方案属性上面的显示所有文件按钮,这样就会在下面出现我们赋值过来
的文件,用虚线表示的,然后我们按住Ctrl全部选中他们,
鼠标右键选择“包括到项目中” ,就这样,我们
就吧他们附加到这个类库项目中了
就这样,我们把其他文件都附加到DAL,Lib,Model,DBUtility 项目中去。
接下来我们得将解决方案中的几个项目关联起来,分别添加好各自间的引用
我们选择引用项目,在BLL中,我们要引用DAL和Model两个项目
Ctrl+鼠标左键选中DAL和Model,点击确定。
然后我们还要在BLL中引用一个Lib项目中的DLL文件,同样的方式,添加引用->浏览->找到Lib项目,选择里面的mon.dll 文件,点击确定
同样的方法,我们将在DAL项目中引用DBUtility ,Model两个项目
然后我们要补充的就是,在DBUtility 项目中添加引用System.configuration 这个系统类,方式是添加引用->.NET->找到System.configuration,然确定
然后我们在WEB 项目中打开配置文件Web.config 文件,在<configuration> 后面添加
复制内容到剪贴板
代码:
<appSettings>
<add key="WebDAL" value="MyBlog.SQLServerDAL"/>
<add key="WebConnectionString" value="server=localhost;Initial Catalog=Bo_Blog;uid=sa;pwd=***"/>
</appSettings>
这样一段数据库链接配置
然后找到DBUtility 项目下的DbHelperSQL.cs 文件,用
复制内容到剪贴板
代码:
ConfigurationManager.AppSettings["WebConnectionString"];
字符串代替
复制内容到剪贴板
代码:
PubConstant.ConnectionString
当然,你也可以不在Web.Config 文件里面写连接字符串,直接写在这里就是了。