http://deportes809.com/_ceng/108/

澳门银河关注互联网产品管理,交流产品设计、用户体验心得!

机房重构d层c

时间:2020-09-27 05:13 来源:未知 作者:admin

  两个多星期的探索终于算是把登录敲通了,当“登录成功!”显示在我眼前的那一刻,我想那种快乐的感觉就好像我中了三百万大奖一样的激动吧! 三层当时不是很明白,所以三层到七层走了不少弯路。出来混早晚是要还的,这话说的一点都没错。废话不多说了,直接上料。

  这里的七层是在三层的基础上与设计模式相结合演化而来的,应用了设计模式中的外观模式和抽象工厂模式。

  二、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找。无需做什么逻辑判断,只是和数据库直接交互。

  三、接口层(IDAL):接口层用来定义一个统一的接口,解除B层和D层的耦合。

  四、工厂层(Factory):工厂来创建接口,返回接口,用到了抽象工厂+反射+配置文件,作用是灵活的实现数据库的连接,方便换数据库,进一步解耦合。

  六、外观层(Facade):这里用到了外观模式,使得复杂问题简单化,用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。

  七:界面层(UI):主要职责是为用户提供信息,以及把用户的指令进行翻译。

  6、创建BLL,调用Factory,得到程序集指定类的实例,完成数据操作方法。

  这次重构采用了分层思想,使得耦合度大大降低,实现了代码良好的扩展性,且便于维护和修改代码.尽管这个过程很是磨人,但最终还是走出来了,万事开头难,加油!

  机房重构中,我们都用到了DataGridView控件,我分享一下我用这个控件的收获。

  我用datagridview时候暂时就遇到了这些有意思的问题,欢迎大家与我共同分享。

  我们都知道,在机房重构中,刚开始看的三层视频,返回值类型是实体,后来用了SqlHelper,返回值类型就变成了Datatable,那这些,和今天要说的泛型有什么关系呢?或者说,我们为什么要大费周折的去用泛型呢?

  实体类即数据库的映射,因此实体类中的属性和数据库表中的字段是相对应的。把DataTable中的每一行记录视为一个实体类,把其中的字段读取出来,存放到实体类的属性中,再把所有的实体类存在泛型集合中。因此,DataTable中有多少个记录,泛型集合中就有多少个实体类,每个实体类的属性和DataTable的字段是相对应的。

  1、 编写B层的人员无需手动填写需要的字段,直接按一下点,全都提示出来了,想用哪个用哪个,不会出现写错的情况。

  2、想用这种方法把DataTable转换成实体类,必须有已知的实体类和DataTable中的数据相对应,也就是说必须明确你要转换成的实体类类型,否则没办法指定泛型集合的类型,也就没办法调用。

  3、各个表的字段尽量区别开来,不要相同。比如A表有个name字段,B表也有一个name字段,就不合理了。

  说了这么多,那么,到底如何来实现Datatable转泛型呢?我们先看代码。

  想要做出来一个功能,有很多方法,我们的任务不仅仅是掌握这些方法,更重要的是分析这些方法,区别这些方法,找到它们各自的优缺点,这样才能更好的使用这些方法。

  经过重重困难终于把机房重构的三大难点之一的组合查询给解决了,今天小编和大家分享一下组合查询过程中的难点和需要注意的地方。

  首先我们来了解一下什么是‘组合查询’,所谓查询我们都知道,就是通过sql语句通过DAL层传递的参数查找数据并返回。这是简单的查询,而组合查询的意思就如字面所知,将我要查询的条件组合起来,组合成我们需求的查询语句再去查询。

  至此,我们可以了解到这里的难点包括(条件的组合,sql语句的拼接),接下来我们就一点一点的解决问题,循环渐进。

  首先我们要做的就是完成多种条件的拼接,我们通过虚方法的重写,来转换数据库字段,把我们在UI层得到的string类型数据转换成我们想要的数据库的字段,用模版方法写好父模版,所有的其他组合查询都继承子窗体,重写虚方法发,添加各自不同的字段。

  所谓模版方法就是,写好一个模版,在其他地方需要用的类似的东西,直接继承,然后有需要的方法重写,其他公共的则继承

  我们上面解决了如何把字段转化成数据库字段,也在DAL层完成了传参,接下来就是我们的存储过程了。

  第二个问题,我们要将sql语句拼凑成我们想要的,在这我们还是借助存储过程。接下来我们一起来看看,存储过程的思路和要注意的点。

  存储过程中最重要的就是sql语句的拼接,当然在这里也有许多没注意到的东西,下面我们来一起来看一看

  首先我们看我们需要不同的几种条件所以我们xi先定义一个@Tempsql来存储

  看这一行代码,第一个要注意的地方在于from的右边和WHERE的左边必须要添加空格,如果不加空格会报一些类似于找不到ca参数的错误。

  我们看到其中有CHAR(32)+参数,其实在这里把他们两个看做了一个整体,我们需要连接整体的时候在(+CHAR(32)+参数)的前面加入空格。

  以至于具体为什么这样可以自己去了解一下sql语句。今天组合查询的分享就到此结束了,本人C#小白,如果有什么问题,还希望ge各位大佬多多指点。

  时候的感受,弄报表这一块的时候觉得很乱。这次用em

  听说VS自带报表功能,心里就开心了不少,结果弄得时候弄了几天没有成功,就开始完善窗体。后来又接着弄,还是没有...

  中会发现有很多重复的代码,在第一次敲机房的时候一些简单的重复一般封装成一个函数进行调用,这次

  (DAL):使用ADO.NET中的数据操作类,为数据库中的每个表,设计1个数据访问类。类中实现:记录的插入、删除、单条记录的查询、记录集的查询、单条记录的有无判断等...

  的时候会使用存储过程,是在数据库中编好的SQL语句。感觉听起来很高大上,一点都不接地气啊!所以……没听懂。 下面就让小编带领大家看一下到底什么是...

  是后一个项目的...不要笑...做完之后闷了将近一天才明白过来,原来这已经是

  在调用SQLHelper中的方法时,用了“带参数的查询SQL语句”查询方法,但是在

  总是有一个主窗体,在主窗体中打开其他窗体时,其实只要你愿意是可以不断打开100个的。但如果这样,既影响用户体验,又无实际意义。这时候应用“单例模式”,让我们同样的窗体只能打开一个~   如何...

  开始有一段时间了但是由于开始不知道如何下手搞得乱七八糟,浪费了很多时间,因为看博客什么的好多人都用了存储过程,泛型什么的感觉自己需要学的有好多,有点儿烦躁把自己给束缚住了,后来想着先写向...

  SQLHelper简介 SQLHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SQLHelper用于简化你重复写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等。SqlHelper封装后通常只是...

  无法自拔,当然在前年我就进入了这个项目,只是那时候没有这样的感觉,一直是盲目的,着急的一天天的看着时间过去,一个非常简单的窗体,一个非常简单的功能,花上好几天也写不出来,真是干...

  【前言】    嗯~ 站在巨人的肩膀上,即使问题再难也会有解决出来的时候,不放弃… 【步骤】    首先要做的这个操作就是创建窗体、添加控件、对控件进行配置等操作,因为有很多人都总结过了,所以在这里就不去...

  相信大家经过对数据库的学习都已经对存储过程有了一个概念,也就是将我们要对多个表的数据进行操作的时候,我们需要进行多次的数据更改,因此我们将所需要的步骤封装在一个盒子里(有点像我们

  【前言】: 以蜗牛的速度终于敲完登录这一条线了,终于思路通了一些,但是当自己再敲注册时,又有点卡壳了,我是将原来的学生... 第一步:进行实体

  终于开始了,自己也在不懈的努力下完成了基本功能,并在其中加上了一些自己的想法,不得不说这是一件很有自豪感的事情。话不多说,我们开始吧。 一、创建七层次: UI

  关注 互联网的一些事 官方微信,回复" 108 " 即可在微信里阅读本篇内容。

  在查找公众号中搜索:织梦58,或者扫描下方二维码快速关注。

围观: 9999次 | 责任编辑:admin

回到顶部
describe