c#三层架构中BLL层哪个函数可以获取数据库中记录的条数

c#三层架构中BLL层哪个函数可以获取数据库中记录的条数,第1张

这个需要自己写的。数据库中的count()可以帮你返回条数

 public static DataSet dataSet( CommandType cmdType, string cmdText)

        {

            DataSet ds = new DataSet();

            SqlCommand cmd = new SqlCommand();

            PrepareCommand(cmd, Con, null, cmdType, cmdText, null);

            SqlDataAdapter sda = new SqlDataAdapter(cmd);

            sdaFill(ds);

            cmdParametersClear();   

            return ds;

            

        }

返回table行数就是最简单的了,不懂可以问。。。我。。。。的

三层 - 数据层,业务层,界面层

1数据层

①数据接口(IData) - 定义数据层接口 - 定义数据加工处理方法(调用数据工厂)

②数据服务(clsDataServer) - 数据最终处理的地方 - 直接与数据库交互 - 常用的SqlHelpercs

③数据工厂(clsDataFactory) - 处理数据加工方式 - 实现数据加工处理方法 - 加工后交给数据服务层提交数据库

2业务层

④业务接口(IBusiness) - 定义业务接口 - 定义业务逻辑处理方法(调用业务逻辑) - 直接与界面层交互

⑤业务逻辑(clsBusinessLogic) - 处理业务逻辑 - 实现业务逻辑处理方法 - 处理逻辑后交给数据层(调用数据接口)处理数据

⑥业务实体(clsBusinessModel) - 将数据实例化 - 便于程序取值/赋值 - 直接与界面层交互

3⑦界面层 - 将界面控件的数据交给业务实体实例化,再将实例化的对象交给业务接口

这里是7个层,比较一下名称,很容易找到和lz对应的层

实际上,一般程序里,用不了那么多层,太多了,开发不容易维护,可以不要接口(少了数据接口,业务接口),数据工厂和业务逻辑可以写在一起也就是:

1数据层

①数据服务

2业务层

②业务逻辑+数据工厂

③业务实体

3④界面层

总共4个层就够了

ps:每个字都是我敲上去的,希望对你有所帮助

作为初学者,我们可能经常会需要去阅读别人的代码,以求从中学到别人的设计思路,抑或是从代码中了解类库的使用。不管哪种需求,我们都需要做到快速准确地阅读。那么,究竟如何阅读呢?让我们以一个net的项目为例:当我们打开一个net解决方案的时候,里面通常有不止一个项目,例如一个三层架构的web项目,里面除了一个web网站外,通常还会包括诸如数据层(DAL)、逻辑层(BLL)项目,另外,一般我们会提供一个通用项目(Common类库),或者把DAL中的model部分抽取出来,这样就可能形成一个包含很多个组件的解决方案。那么我们拿到这个解决方案的时候要怎么入手呢?我的经验是,读别人的代码,由面及点和由点及面相结合的读法是最快的。所谓由面及点,就是说,首先理解整个解决方案的分工,比如叫做“web”项目是网站部分,是MVC架构中的V;名字中包括“BLL”的部分是业务代码,是MVC架构中的C;而名字中包括“DAL”的部分是数据库访问代码,是MVC架构中的M……理解每个子项目的功能,有助于我们直接进入主题,而不用花太多时间去熟悉所谓的框架部分。那么,主题在哪里呢?对于一个web项目来说,主题就是页面和业务代码。而这些,需要我们有点及面地学习。所谓由点及面,就是说,我们先进入一个页面,比如indexaspx(如果没有这个页面,一般也会有UserLoginaspx之类的页面),打开这个页面,找到其中的功能按钮,根据按钮事件找到下一个页面,在熟悉页面流向的过程中,我们也从事件代码中了解了框架代码的调用方法。 那么,阅读一个具体的页面(包括页面本身和按钮事件,或者说,业务代码)的方法呢?1、代码包括如下部分1)页面本身,即前台代码2)页面后台,即各种事件3)在页面事件中调用到的其他代码(例如数据库访问代码、多层架构中分出的其他层代码等)2、阅读顺序1)阅读前台代码,对于初学者可以学习控件标签的使用方法,当然,事实上我们是用vs的设计工具来画页面的,察看代码只是为了更加熟悉,或者加深理解。2)阅读页面后台事件代码,分两步走。首先,宏观理解一个事件的功能,比如点击一个登陆按钮,是要做:取得输入用户名和密码,根据用户名和密码查找数据库,根据返回结果判断页面流向,提示登陆成功或失败信息,等等。只需要理解功能即可,不需要深入理解每句代码的作用。因为这个时候我们是初次察看别人的后台代码,对于封装很好的框架,我们是很难第一次阅读就读懂所有东西的。3)然后,在我们已经了解了一个事件的功能后,我们再次阅读,此时逐行分析。例如我们会碰到代码中定义了一个数据表对象(如User对象),然后执行数据库查询(此时我们可以熟悉项目中的数据库 *** 作),然后对返回值进行 *** 作(例如判断用户存在否,密码正确否)。在这些 *** 作中我们可以(1)学习基础类库的使用,(2)熟悉框架代码的使用注:在学习代码过程中,了解框架是意识上的进步,学习代码是技术上的进步,所以在逐步理解代码阶段,碰到人家封装好的类,例如数据库访问类,不用太执着,只要理解即可;而碰到某些编程技巧,则需要深入理解。

第一段段代码的意思就是:

有一个MaticsoftBLLHoliday的业务逻辑层,声明了一个对象UserBLL,MaticsoftModelHoliday模型层,声明了一个对象UserInfo,这个UserInfo对象的值来自于UserBLL中GetModel(UserID)。

第二段代码的意思是:

给前端控件赋值,

thistxtBeginDateText = UserInfoBeginDateToString(); //前端txtBeginDateText的值为UserInfo模型中BeginDate的值,其他的以此类推。

这是典型的ASPNET 三层框架,如果你不懂,你可以在百度搜索一下ASPNET三层框架。

你不就是想做个递归吗?

我发给你我写的方法,你写的我还真没心情去看。

跟你写好了注释。。

public void BindCategoryTreeVew(TreeView treeView, bool isExpanded)

{

BLLProducts bll = new MaticsoftBLLProducts();

将获取的数据转换为 一个DataTable

DataTable dt = bllGetList("")Tables[0];

treeViewNodesClear();//清空 树的所有节点

获取与排序顺序中的筛选器以及指定的状态相匹配的所有SystemDataDataRow 数组

DataRow[] rowlist = dtSelect("fatherid='0'");

foreach (DataRow row in rowlist)

{

if (rowlistLength <= 0) return;

创建跟节点

TreeNode rootNode = new TreeNode();

设置根节点的属性

rootNodeText = "<h1 class='type'>" + row["pro_name"]ToString()+"</h1>";

设置根节点的值

rootNodeValue = row["pro_id"]ToString();

rootNodeExpanded = isExpanded;

rootNodeExpanded = false;

添加跟节点

CategoryViewNodesAdd(rootNode);

CreateChildNode(rootNode, dt, isExpanded);

}

}

private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded)

{

选择数据,添加排序表达市

DataRow[] rowList = dtSelect("fatherid=" + ConvertToInt32(parentNodeValue));

foreach (DataRow row in rowList)

{

创建一个新的节点了

TreeNode node = new TreeNode();

nodeText = "<ul class='MM'>" + "<li>" + row["pro_name"]ToString() + "</li>" + "</ul>";

nodeValue = row["pro_id"]ToString();

nodeExpanded = isExpanded;

nodeNavigateUrl = "Productaspxtype_id=" + ConvertToInt32(nodeValue) + "";

parentNodeChildNodesAdd(node);

nodeExpanded = true;

递归调用,创建其他节点

CreateChildNode(node, dt, isExpanded);

}

}

从程序本身不会影响什么,而且你这么命名系统也没有警告

效率上没有任何影响

因为BllUser User=new BllUser();中

BllUser系统认定为“类名”

new BllUser();也会认为是“实例化”

而你自定义叫的那个User是“对象”或者说“变量”;

就算整个程序都这样样命名程序也不会出先效率降低

因为电脑会走他自己的程序,对他来讲,“类名”与“对象”根本不是一个层次的东西,他很清楚自己找的是类还是对象,如果不清楚,他在你还没有编译的时候就会提醒你的 这个你放10000个心

但是有一个很严重的问题会产生!!!

你自己晕了!!!

三层架构各层之间的依赖关系是什么?, 什么是三层架构?各层的主要功能及相互关系有哪些

一般讲到三层架构,其实就是将整个业务应用划分为表示层、业务逻辑层、数据访问层等。

数据访问层DAL,业务逻辑层BLL。表现层UI (界面类的) model(数据模型层,主要放的我就不用说了。一般都是数据库中的。) ,model是贯穿的。所有的都引用它,bll引用dal ui引用dal 和bll 然后就是调用

三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

普通三层:数据访问层DAL:用于实现与数据库的交互和访问,从数据库获取数据或保存数据到数据库的部分。 业务逻辑层BLL:业务逻辑层承上启下,用于对上下交互的数据进行逻辑处理,实现业务目标。 表示层UI:主要实现和用户的交互,接收用户请求或返回用户请求的数据结果的展现,而具体的数据处理则交给业务逻辑层和数据访问层去处理。业务实体Model:用于封装实体类数据结构,一般用于映射数据库的数据表或视图,用以描述业务中客观存在的对象。Model分离出来是为了更好地解耦,为了更好地发挥分层的作用,更好地进行复用和扩展,增强灵活性。 通用类库Common:通用的辅助工具类

工程模式:简单工厂模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常根据一个条件(参数)来返回不同的类的实例。

工厂角色(Creator)

是简单工厂模式的核心,它负责实现创建所有具体产品类的实例。工厂类可以被外界直接调用,创建所需的产品对象。

抽象产品角色(Product)

是所有具体产品角色的父类,它负责描述所有实例所共有的公共接口。

具体产品角色(Concrete Product)

继承自抽象产品角色,一般为多个,是简单工厂模式的创建目标。工厂类返回的都是该角色的某一具体产品。

通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通 讯与中间层建立连接,再经由中间层与数据库进行交换

完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层 否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说 不同的应用有不同的理解,这是一个概念的问题.

MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把"做什么"(业务处理)和"如何做"(业务实体)分离。这样可以实现业务逻辑的重用。由于各个应用的具体业务是不同的,这里不再列举其具体代码实例。

MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。 同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。 在三层架构中没有定义Controller的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

在ASP NET中的MVC架构编写的,具有极其良好的可扩展性。它可以轻松实现以下功能: ①实现一个模型的多个视图;②采用多个控制器;③当模型改变时,所有视图将自动刷新;④所有的控制器将相互独立工作。这就是MVC架构的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC架构实现的应用程序具有极其良好的可扩展性,是ASP NET面向对象编程的未来方向。

MVC的不足体现在以下几个方面:(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新 *** 作,降低运行效率。(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。3)视图对模型数据的低效率访问。依据模型 *** 作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害 *** 作性能。(4)目前,一般高级的界面工具或构造器不支持MVC架构。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。

三层架构是将代码按其作用分成三部分,每部分解决自己负责的流程 三层架构的功用之处,在于驾驭大型web程序的结构,使之便于管理和扩展

在设计UI的时候,我们不需要关心其中的逻辑和数据问题,只需要空出对应的位置,用于放置数据 在设计和修改的时候,要解决的只是HTML的结构,代码看起来干净利落,做起来也是干净利落

UI直接将程序逻辑的任务丢给BLL,BLL就开始构建具体的实现细节BLL的创建依赖于业务 例如一个文章系统,BLL_Aticle就表示它是用于对文章的处理的BLL_Aticle可以提供给UI一个文章列表的recordset,显示在UI的预留位置 当BLL_Aticle需要从数据库中获取数据的时候,就将任务丢给DAL层

DAL层专门负责和数据库打交道,它从BLL获取参数,组织一个有效的SQL,建立数据库连接,执行SQL进行更新或获取,将返回的数据交给BLL

每一部分的业务都集中于一个UI-BLL-DAL的链中,上下清晰了然 至于是怎样的便于管理和扩展,将在后面结合实例进行分析

复杂的生命形式必有复杂的生存法则,若想在自己的项目中应用好三层架构,需要多用点心体会其中的应用法则

我对三层架构的理解还不够深,这些文章能算是抛砖引玉就不错了大家在阅读当中不要局限于我所构思的法则,要多向具体的应用中去实践,根据具体情况,寻出自己的法则 有所感悟,就记得写下来,这种感悟是进步的契机,但必然不是最终的结果有了感悟就拿去应用,可以发现它的优劣,继续完善

三层架构比双层或单层结构都有更大的优势。三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度。

三层架构属于瘦客户的模式,用户端只需一个较小的硬盘、较小的内存、较慢的CPU就可以获得不错的性能。相比之下,单层或胖客户对面器的要求太高。

三层架构的另一个优点在于可以更好的支持分布式计算环境。逻辑层的应用程序可以有多个机器上运行,充分利用网络的计算功能。分布式计算的潜力巨大,远比升级CPU有效。

三层架构的最大优点是它的安全性。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。

vs三层架构之间的关系 ?

client -midware -server

可以这样理解:

client 把要求提供给midware

midware 提供服务给 client

midware 把要求提供给server

server 提供服务给 midware

只所以用midware,因为client变化大,

现在不只3层了

类与类之间的依赖关系是怎样的

对于两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系

C#的三层架构各层之间到底怎么传递数据的啊?

可以用属性赋值传,也可以用方法参数传。

mvc与三层架构的关系是怎么样的

三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。

三层是为了解决整个应用程序中各个业务 *** 作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。

比如将数据库 *** 作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。

MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。

只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。

三层架构中各层如何传递多个对象

public class Person

{

public string name{get;set;}

public int age{get;set}

}

然后把Person对象传过去就好了

传递多个对象,主要看架构者的手段

1有些人通过Bil去对外提供服务,那么UI的对象依靠bil提供,bil则依靠model或者dal提供

2有些人通过mvc方式提供,那么他则会根据control控制去获得view视图对象,通过这个视图对象来完成UI到逻辑的传递,至于逻辑本身如何向下传递则同1

ps:其实个人认为不必去管这些,与一些人以一层不变的model不同,我们认为其实各层封装各层自己的viewmodel,你自己根据需要灵活组合,拆解就ok

比如在UI层,为了绑定方便,我们可以有UI的viewmodel

在逻辑层,为了提供不同动作的服务我们则可以继承,组合,装饰,拆解不同对象以提供逻辑层的业务逻辑对象。

而数据层,同样如此。数据库表不等于模型对象,模型对象也不是数据库表。一个模型对象可以被拆分成多个表,一个表可能会是多个模型对象的数据提供。

所以不必强求用一套统一的model去搞定他,要知道OO本身就是封装,继承,多态。你都强行把自己弄成一个一成不变的model,本身就不是OO的对象了。那个是c语言的结构体了

什么是数学知识之间的依赖关系?

数学知识之间的依赖关系,也就是知识的综合应用问题,知识点之间与知识点之间有练习,对于某些练习题来说,若某些知识点没有及时掌握的话,会影响解题。下面这个例子就是应用数学知识之间的依赖关系解题的。1在Rt△ABC中(AB是斜边),BC=7cm,AC=24cm,点p在BC上,从B点到C点运动(不包括C点),点P运动的速度为2cm/s;Q点在AC上从C点运动到A点(不包括A点),速度为5cm/s若点P、Q分别从B、C同时运动。

过程

设P运动x秒时,则BP=2x,CQ=5x

S△PCQ=5x(7-2x)/2

=-5(x -7x/2+49/16)+245/16

=-5(x-7/4)+245/16

即当x=7/4(秒)时,△PCQ的面积最大,最大面积是245/16

2在ΔABC中,D为BC的中点,E为AC上的任意一点,BE交AD于点O.某学生在研究这一问题时,发现了如下事实: 如图1,当 时,有 ;

如图2,当 时,有 ;

如图3,当 时,有 ;在图4中,当 时,

参照上述研究的结论,请你猜想用n表示AO∶AD的一般结论,并给出证明

结论: AE∶AC=1∶(1+n)时,

AO∶AD=2∶(2+n).

证明:如图4,作DF‖BE,交AC于F.

∵BD=DC,∴EF=FC.

∵AE∶AC=1∶(1+n),∴AE∶EC=1∶n=2∶2n.

∴AE∶EF=2∶n.

∴AO∶AD=AE∶EF=2∶(2+n) 数理化专团作答

注入怎么解决组件之间的依赖关系

Spring 从核心而言,是一个DI 容器,其设计哲学是提供一种无侵入式的高扩展性框架。即无需代码中涉及Spring专有类,即可将其纳入Spring容器进行管理

以上就是关于c#三层架构中BLL层哪个函数可以获取数据库中记录的条数全部的内容,包括:c#三层架构中BLL层哪个函数可以获取数据库中记录的条数、C#三层结构开发的问题、如何阅读别人的代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9546646.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存