创建数据访问层

合集下载

laravel service repository分层

laravel service repository分层

laravel service repository分层在Laravel 中,服务仓库(Service Repository)是一种设计模式,用于将业务逻辑与数据访问层分离。

通过使用服务仓库,您可以实现代码的解耦和可维护性。

在Laravel 中实现服务仓库分层,通常包括以下几个层次:1. 数据访问层(Data Access Layer):负责与数据库进行交互,包括查询、插入、更新和删除操作。

2. 服务层(Service Layer):负责处理业务逻辑,通常会调用数据访问层来获取或存储数据。

3. 控制器层(Controller Layer):负责接收用户的请求,调用服务层进行处理,并将结果返回给用户。

在Laravel 中,您可以使用服务容器(Service Container)和依赖注入(Dependency Injection)来管理这些层之间的依赖关系。

服务容器负责解析和实例化类,并提供依赖注入的功能。

以下是一个示例,展示了如何在Laravel 中实现服务仓库分层:1. 创建数据访问层:// DatabaseRepository.phpnamespace App\Repositories;use Illuminate\Support\Facades\DB;class DatabaseRepository{public function getData(){return DB::table('table_name')->get();}}2. 创建服务层:// UserService.phpnamespace App\Services;use App\Repositories\DatabaseRepository;class UserService{private $repository;public function __construct(DatabaseRepository $repository) {$this->repository = $repository;public function getAllUsers(){return $this->repository->getData();}}3. 创建控制器层:// UserController.phpnamespace App\Http\Controllers;use App\Services\UserService;use Illuminate\Http\Request;use Illuminate\Support\Facades\Response;class UserController extends Controller{private $service;public function __construct(UserService $service) {$this->service = $service;}public function getAllUsers(Request $request){$users = $this->service->getAllUsers();return Response::json($users);}}在上述示例中,DatabaseRepository 是数据访问层,负责与数据库进行交互。

ASP.NET三层架构步骤讲解

ASP.NET三层架构步骤讲解

三层架构步骤讲解前言:与ASP相比在Web应用开发上无疑更容易,更有效率。

Web开发大部分还是围绕着数据操作,建立数据库存储数据,编写代码访问和修改数据,设计界面采集和呈现数据。

走过学习入门阶段后,真正开始着手开发一个Web项目时,才发现错综复杂的数据与关联根本就不是SqlDataSource和AccessDataSource数据源控件能简单解决的,而恰恰是被忽视了的一个ObjectDataSource数据源控件才是真正踏入开发门槛的关键,由此也对三层架构模式有了初步体验。

一.三层架构介绍设计模式中的分层架构(可以参考一下J2EE中MVC模式)实现了各司其职,互不干涉,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。

这样就能更好的实现开发中的分工,有利于组件的重用。

所以这些年关于模式的研究有很多成果,应用也很广泛。

一个好的模式在程序开发和后期维护中作用重大。

三层架构自底向上分为:数据访问层(DAL),业务逻辑层(BLL)和表示层(PL)。

数据访问层(DAL):使用了一个强类型的DataSet作为数据访问层,只是单纯的对数据进行增,删,改,查询和判断存在等等较通用的数据访问方法(由SQL语句来提供),不应该有“事务”存在。

业务逻辑层(BLL):业务逻辑层是在数据访问层和表示层之间进行数据交换的桥梁,按业务需求调用数据访问层中的方法组合,集合了各种业务规则到一个BLL中,例如通过条件进行判断的数据操作或“事务”处理。

BLL都是以类库(Class Library)的形式来实现的。

表示层(PL):表示层是为客户提供用于交互的应用服务图形界面,帮助用户理解和高效地定位应用服务,呈现业务逻辑层中传递的数据,用页面来实现。

二.三层架构应用实现随着 的不断升级,可以很方便的使用 来构建B/S 三层架构的应用程序,下面以“教师业务信息管理系统”项目中的部分例子来演示如何使用 2.0 和SQL Server 2005数据库来构建一个三层架构的应用程序。

表示层-业务逻辑层-数据访问层

表示层-业务逻辑层-数据访问层

1.什么是三层架构所谓的三层开发就是将系统的整个业务应用划分为表示层——业务逻辑层——数据访问层,这样有利于系统的开发、维护、部署和扩展。

分层是为了实现“高内聚、低耦合”。

采用“分而治之”的思想,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。

∙表示层:负责直接跟用户进行交互,一般也就是指系统的界面,用于数据录入,数据显示等。

意味着只做与外观显示相关的工作,不属于他的工作不用做。

∙业务逻辑层:用于做一些有效性验证的工作,以更好地保证程序运行的健壮性。

如完成数据添加、修改和查询业务等;不允许指定的文本框中输入空字符串,数据格式是否正确及数据类型验证;用户的权限的合法性判断等等,通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。

∙数据访问层:顾名思义,就是用于专门跟数据库进行交互。

执行数据的添加、删除、修改和显示等。

需要强调的是,所有的数据对象只在这一层被引用,如System.Data.SqlClient等,除数据层之外的任何地方都不应该出现这样的引用。

可以使用.NET平台快速方便地部署三层架构。

革命性的变化是在网页中也使用基于事件的处理,可以指定处理的后台代码文件,可以使用C#、VB、C++和J#作为后台代码的语言。

. NET中可以方便的实现组件的装配,后台代码通过命名空间可以方便的使用自己定义的组件。

显示层放在ASPX 页面中,数据库操作和逻辑层用组件或封装类来实现,这样就很方便的实现了三层架构。

2.为什么使用三层架构对于一个简单的应用程序来说,代码量不是很多的情况下,一层结构或二层结构开发完全够用,没有必要将其复杂化,如果对一个复杂的大型系统,设计为一层结构或二层结构开发,那么这样的设计存在很严重缺陷。

下面会具体介绍,分层开发其实是为大型系统服务的。

在开发过程中,初级程序人员出现相似的功能经常复制代码,那么同样的代码为什么要写那么多次?不但使程序变得冗长,更不利于维护,一个小小的修改或许会涉及很多页面,经常导致异常的产生使程序不能正常运行。

java三层架构:数据访问层、业务逻辑层、表现层

java三层架构:数据访问层、业务逻辑层、表现层

java三层架构:数据访问层、业务逻辑层、表现层java三层架构:数据访问层、业务逻辑层、表现层☀三层架构中的更改情况:业务层-----⼀般不变的,主要是⼀些算法逻辑,⽤了策略模式,⽤了反射技术使得它的变化相对稳定。

(规则制定) ~业务(Business)或叫商务持久层-----存储数据的,存储数据可能会由xml配置⽂件更改为数据库.视图层------显⽰界⾯的,显⽰界⾯可能有c/s 更改为 b/s.⼀、持久层(Data Access Layer DAL 数据访问层)采⽤DAO模式。

建⽴实体类和数据库表映射(ORM映射)。

也就是哪个类对应哪个表,哪个属性对应哪个列。

持久层的⽬的就是,完成对象数据和关系数据的转换。

⼆、业务层(Business Logic Layer BLL 逻辑层、service层)采⽤事务脚本模式。

将⼀个业务中所有的操作封装成⼀个⽅法,同时保证⽅法中所有的数据库更新操作,即保证同时成功或同时失败。

避免部分成功部分失败引起的数据混乱操作。

三、表现层(UI层、视图层、界⾯层)采⽤MVC(Model-View-Controler)模式,采⽤JSP/Servlet 技术进⾏页⾯效果显⽰。

M称为模型,也就是实体类。

⽤于数据的封装和数据的传输。

V为视图,也就是GUI组件,⽤于数据的展⽰。

C为控制,也就是事件,⽤于流程的控制。

☀框架:☼SSH框架业务层——Spring表现层——Struts持久层——Hibernate☼SSM框架业务层——Spring表现层——SpringMVC持久层——MyBatis 《理解java三层架构:持久层、业务层、表现层》。

ADO.NET数据访问层基类的构建

ADO.NET数据访问层基类的构建

1472006年第9期下学术理论现代企业教育M OD ER N EN TERPR I SE ED U C ATI O N 现代企业教育传统数据访问层存在的问题在编写数据访问代码时总要一遍又一遍地重复编写读数据库连接字符串建立数据库连接对象打开连接创建C om m a nd 对象创建数据适配器创建数据集填充数据集建立表间关联关闭连接这种高重复代码的编写每次就像在写一篇八股文枯燥乏味有时尽管可以通过代码段粘贴来减轻打键盘的一些负担但还要小心修改一些参数在一定程度上还是影响编程效率在总结以前的代码以后决定构建一个数据访问层基类以简化有关的编程基本思路数据访问层无非进行两种操作第一类是查询返回D at a T a bl e 并进行插入更新删除等无返回值的操作我们完全可以创建一个自定义函数将数据库连接字符串数据表名称字符串等作为参数加以处理就可以将建立数据库连接对象打开连接创建Com m a nd 对象创建数据适配器创建数据集及填充数据集这一系列操作交给自定义函数来处理至于第二类是对数据集里面的已有表建立关联操作相对简单总之只要构建一个数据访问层基类包含这些繁琐的代码其余的数据访问层代码继承该数据访问层基类就可以提高编程效率并增加程序的可读性但对第一类情况在调用基类函数时可能要给出存储过程名称和存储过程参数又因为在调用时可能是用存储过程也可能是用SQ L 语句来读取表中的数据所以要综合考虑这两种情形设置一个布尔型参数指示调用时是否使用存储过程如果是存储过程则直接运行否则运行指定的S Q L 语句具体的实现细节及源程序如下实现原理及说明本程序在V isual St ud i o.N et 2003下运行通过且以SQ LServer Pr o-vi de r 为例对O L E Pr ovi der 实现原理基本一样只需作很小改动即可使用基类名称cl sD at abase.vb 函数名称Ful l D at aSet Fr om T abl e 函数功能填充并返回数据集参数说明st r C onnect i on----数据库连接字符串st r T abl eN am e-----数据表的名称字符串st r SQ Lor St or edPr oc ----SQ L 语句字符串或存储过程名称字符串b l nSt or edPr ocedur e-----是否为存储过程dsD at aset -----要填充的数据集名称函数名称Popu l at eD at aSet R el ati on shi p函数功能创建数据集中两表之间的关系(篇幅所限代码从略)参数说明st r T abl e1------第一个表(父表)的名称st r T abl e 2-------第二个表(子表)的名称s t r C o l u mn F r o mTa b l e 1---第一表的主键名称s t r Col um nFr om T abl e2---第二表的外键名称st r R el at i onshi pN am e-------要创建的关联名称dsD at aSet 数据访问层基类的构建刘文化杨小影济源职业技术学院454650)摘要本文对A D O .N ET 访问数据源的环节进行了概括指出原有数据访问层的缺点提出了构建数据访层基类的思路并用两个自定义函数给出了具体的构建途径关键词数据访问层数据集SQ L 语句存储过程关联---------------数据集名称源程序如下I m port sS yst em .d ata I m po rt sS ystem .d ata.sqlC lien t Fun cti onFull D at aSetFrom T able(B yV al st r C on nect i o n A sSt ri n g,_B yv al st rT ab l eN am e A s S t ri ng ,_B yv al st r S Q L or S t ored Pr o c A s Str i n g,_B yval blnStor edProcedure A s B oo l ean,_B yR ef d sD at aSet A s D at aSet)A S D at aSetT ry D i m Sq l co nnA s N ew sqlcli ent.sq l C o nn ecti o n(st rC on nect ion )S ql C onn .O pen ()D imadap t erG en er al A s N ewS ql C l i ent.SqlD ataA d apter ()A dap t erG en eral.T ab l eM app i ng s.add(T ab l e ,st r T ableN am e)D i mcm dt y pe as Sql C l ient.Sql C om m and=N ew_S qlC l ient.S ql C om m and (st r S Q L o r S t oredP r oc,sql C onn )I f bl nStor edPr ocedure T hen `运行指定的存储过程或SQ L 语句C m dT abl e.C om m and T ype=C om m an dT ype.St or edPr ocedur e E lse C m dT abl e.C om m andt ype=C om m andT ype.T ext E ndIf A dapter G en er al.Sel ect C om m and=cm dT ab l e `使用存储过程或SQ L 语句从指定的表中读取的结果填充数据集ad ap ter G en er al.fi ll(d sD ataSet)Sq lC o n n.C l o se()R et urndsD at asetCat ch`捕获错误句柄U nh and l ed E xcepti on H an dl er ()E nd T r y E ndF uncti on sub U nhandl edE xcept i onH andl er ()`错误处理子程序也属于该类的成员M sgbox(发生错误错误代码&E r r .N um be r &_描述&Er r.D es cr i pt i on &错误源&Er r.Sour ce)End s ub `错误发生时对用户显示错误信息总结A DO .ne t 的多层结构决定了其数据访问层的调用有固定的规律可循创建其数据访问层的基类为用户提供统一的调用接口参数可极大地提高编程效率同时也提高了应用程序的可读性和可重用性参考文献A D O .N E T 高级编程Paul D i cki nson 等著张晓明等译中国电力出版社V i sual St udi o.N ET 高手攻略许进标编著袁鹏飞改编人民邮电出版社。

数据访问层定义和实现

数据访问层定义和实现


SQLHelper公共类分析 公共类分析
方法 说明
ExecuteDataSet ExecuteNonQuery
读数据,执行存储过程返回DataSet 写数据,执行存储过程返回执行结果成功 与否标志
接口定义
接口定义一个类的表现形式,但不包含任何实现。 接口定义一个类的表现形式,但不包含任何实现。定目划分为:表现层、业务逻辑层、数据访问层。 整个项目划分为:表现层、业务逻辑层、数据访问层。
• 网页 网页aspx不能直接访问或者绑定数据库。 不能直接访问或者绑定数据库。 不能直接访问或者绑定数据库
系统架构详细图
数据层设计
相关知识点: 相关知识点: 数据读写方法 存储过程编写 接口定义和继承 工厂与反射
如:网站系统 可以定义一些接口中预先定义面 向SQL Server和Access数据库的不同实现方法类,然 数据库的不同实现方法类, 和 数据库的不同实现方法类 后针对不同的数据库需求, 后针对不同的数据库需求,传入需要实现的类型 参 数,动态实现接口说明。 动态实现接口说明。
Assembly.Load(path).CreateInstance(classname)

2.更加规范,封装性更好 更加规范, 更加规范
接口继承
接口继承是说明继承, 接口继承是说明继承,用“:”后跟被继承的接口名字 后跟被继承的接口名字
工厂与反射(一 工厂与反射 一)
工厂模式是定义一个产生接口, 工厂模式是定义一个产生接口,然后在继承的子 类中具创建体实现。 类中具创建体实现。
工厂与反射(二) 工厂与反射 二 反射技术是将需要创建类的类型传递到 工厂方法中, 工厂方法中,由工厂方法根据类型返回相应 的实例。 的实例。

.net网页开发中的三层架构

.net网页开发中的三层架构

.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,既业务逻辑层的代码。

数据库分层设计

数据库分层设计

数据库分层设计三层模型包括以下三个层次:1.数据存储层:该层负责对数据进行存储和管理,通常使用关系型数据库或者NoSQL数据库来实现。

在这个层次上,要进行数据表的设计、索引的创建、事务的处理等。

2.数据访问层:该层负责对数据库进行访问和操作,将业务逻辑与数据操作相分离。

常见的实现方式是通过使用ORM(对象关系映射)框架来实现,ORM框架可以将数据库中的表映射成相应的对象,以面向对象的方式进行数据操作,其主要功能包括数据的增删改查、事务管理等。

3.业务逻辑层:该层负责处理业务逻辑和业务规则,实现应用程序的核心功能。

在这个层次上,要进行数据的处理、业务逻辑的封装、数据的验证和处理以及与其他系统的交互等。

四层模型在三层模型的基础上增加了一个表示层,即:4.表示层:该层负责将用户界面和业务逻辑进行连接,实现数据的展示和用户的交互。

常见的实现方式是通过Web框架来实现,Web框架可以接收用户请求,调用相应的业务逻辑层进行处理,并将处理结果展示给用户。

1.合理划分职责:要根据实际情况合理划分不同的层次,并明确各层次的职责,避免层次之间的功能重叠或缺失。

2.保持层次之间的独立性:每个层次应该是相对独立的,不同层次之间的变化应该互不影响,这样可以降低系统的耦合度,方便维护和扩展。

3.模块化设计:要将每个层次进一步划分为模块,每个模块负责一个特定的功能,这样可以降低模块之间的依赖关系,提高代码的可重用性。

4.考虑性能和安全性:在设计数据库分层时,要考虑系统的性能和安全性需求,合理选择和配置数据库系统,并进行性能测试和安全评估,确保系统在高负载和攻击条件下的正常运行。

综上所述,数据库的分层设计是一种将数据库按照功能和职责进行划分的设计方法,通过合理划分职责、保持层次之间的独立性、模块化设计和考虑性能和安全性等方面的考虑,可以提高数据库系统的可维护性、可扩展性和可重用性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简介作为web 开发人员,我们的工作总是在和数据打交道。

我们创建数据库来存储数据,编写代码来检索并修改数据,并创建Web 页面来收集和汇总数据。

这是探讨在 2.0 中实现这些常用类型的技巧的系列教程中的首篇教程。

我们从创建一个软件架构开始,包括使用Typed DataSet 的数据访问层(DAL) 、实现自定义业务规则的业务逻辑层(BLL) 和共享同一页面布局的 页面组成的表示层。

一旦奠定了这个基础,我们接下来会转向报表,说明如何显示、汇总、收集和验证来自Web 应用程序的数据。

这些教程力求简明,使用大量屏幕截图逐步教您直观地了解整个流程。

每个教程都提供C# 和Visual Basic 版本,并且可以下载所使用的全部代码。

(这篇教程内容非常冗长,但接下来会分几大部分进行介绍,使人更容易理解和消化。

)针对这些教程,我们将使用放在App_Data目录下Northwind 数据库的Microsoft SQL Server 2005 Express Edition版本。

除数据库文件外,App_Data文件夹也包含创建该数据库的SQL 脚本,以满足您想使用不同数据库版本的需求。

如果愿意,这些脚本也可以直接从Microsoft 下载。

如果您使用的是Northwind 数据库的不同SQL Server 版本,需要更新该应用程序的Web.config文件中的NORTHWNDConnectionString设置。

这个Web 应用程序是使用Visual Studio 2005 Professional Edition 创建的基于文件系统的Web 站点项目。

不过,所有的这些教程同样适用于Visual Studio 2005 免费版,即Visual Web Developer。

该教程从头开始,先创建数据访问层(DAL) ,然后在第二篇教程中创建业务逻辑层(BLL) ,并在第三篇教程中进行页面布局和导航。

随后的教程以前三篇教程为基础。

在这篇教程中我们有很多内容要学习,现在就让我们打开Visual Studio 开始吧!步骤1 :创建一个Web 项目并连接到数据库在创建我们的数据访问层(DAL) 之前,我们首先需要创建一个网站并安装我们的数据库。

开始创建一个新的基于文件系统的 网站:从File 菜单选择New Web Site ,出现New Web Site 对话框。

选择 Web Site 模板,将Location 下拉列表设置成File System ,然后为该网站选择一个文件夹,并将语言设置成C# 。

图1 :创建一个基于文件系统的新网站这将创建一个具有Default.aspx 页面和App_Data文件夹的新网站。

创建好了网站,下一步是在Visual Studio 的Server Explorer 中添加对该数据库的引用。

通过在Server Explorer 中添加数据库,您可以添加来自Visual Studio 的表、存储过程、视图等。

您还可以手动或通过Query Builder 直观地查看表数据或进行查询。

而且,当我们为DAL 创建Typed DataSet 时,我们需要将Visual Studio 指向需要建立Typed DataSet 的数据库。

当我们能够及时在那个点上提供这种连接信息时,Visual Studio 自动填充己在Server Explorer 注册过的数据库的下拉列表。

将Northwind 数据库添加到Server Explorer 的步骤取决于您是否使用App_Data文件夹中的SQL Server 2005 Express Edition 数据库,或者是否有您想使用的Microsoft SQL Server 2000 或2005 数据库服务器安装程序。

使用 App_Data文件夹中的数据库如果您没有SQL Server 2000 或2005 数据库服务器可连接,或者您只想避免将该数据库添加到数据库服务器的麻烦,可以使用位于已下载网站源代码的App_Data文件夹中的Northwind 数据库的SQL Server 2005 Express Edition 版本(NORTHWND.MDF) 。

位于App_Data文件夹中的数据库将被自动添加到Server Explorer 。

假如您安装了SQL Server 2005 Express Edition ,在Server Explorer 应该看到一个名为NORTHWND.MDF 的节点,可以展开并探究其表、视图、存储过程等(见图2 )。

App_Data文件夹也可以存放Microsoft Access .mdb文件。

同它们的SQL Server 版本的数据库一样,这类文件将被自动添加到Server Explorer 。

如果您不想使用任何SQL Server 的数据库,您可以下载Northwind 数据库文件的Microsoft Access 版本并加入App_Data目录。

不过要记住,Access 数据库的特性不如SQL Server 丰富,且并不是为在网站环境下使用而设计的。

另外,35 以后的教程将用到某些不被Access 支持的数据库级特性。

连接到Microsoft SQL Server 2000 或2005 数据库服务器中的数据库同样,您可能要连接到安装在数据库服务器上的Northwind 数据库。

如果数据库服务器还没有安装Northwind 数据库,您必须先运行该教程下载文件中的安装脚本或直接从Microsoft 网站下载Northwind 的SQL Server 2000 版本和安装脚本,将其添加到数据库服务器。

一旦安装了该数据库,转到Visual Studio 的Server Explorer ,右键单击Data Connections 节点并选择Add Connection 。

如果没有找到Server Explorer ,转入View / Server Explorer 或选择Ctrl+Alt+S 。

这时将出现Add Connection 对话框,在这里可以指定要连接的服务器,认证信息和数据库名称。

一旦成功配置了数据库连接信息,单击OK 按钮,该数据库将被作为一个节点添加到Data Connections 节点下面。

您可以展开该数据库节点以探究其表、视图、存储过程等。

图2 :在您的数据库服务器的Northwind 数据库添加一个连接步骤2 :创建数据访问层在处理数据时,有种做法是将数据的特定逻辑直接内嵌到表示层(Web 应用程序中, 页面组成表示层)。

这可以通过在 页面的代码部分编写 代码,或者在标记符部分使用SqlDataSource 控件来完成。

无论采取哪种形式,该方法都让数据访问逻辑与表示层紧密结合。

不过,建议将数据访问与表示层隔离开来。

这个分离层被称作数据访问层(DAL) ,通常作为一个单独的类库项目来实现。

这种分层体系结构的优势得到了很好的论述,我们在该系列教程中也采用了此法。

有关基础数据源的所有代码,如创建到数据库的连接,发出SELECT 、INSERT 、UPDATE和DELETE命令等,都应位于DAL 。

表示层不应包含对这些数据访问代码的任何引用,而是通过调用DAL 来实现所有的数据访问请求。

数据访问层通常包含访问基础数据库数据的方法。

例如,Northwind 数据库提供Products和Categories表,记录要销售的产品及其他们所属的类别。

我们的DAL 提供如下方法:∙GetCategories():返回所有类别的信息∙GetProducts():返回所有产品的信息∙GetProductsByCategoryID(categoryID):返回属于某一指定类别的所有产品∙GetProductByProductID(productID):返回某一产品的信息调用时,这些方法将连接到数据库,进行适当的查询,并返回查询结果。

重要的是返回这些结果的方式。

这些方法可以简单返回一个由数据库查询填充的DataSet 或DataReader ,但理想的是应使用强类型的对象来返回这些结果。

强类型对象指的是编译时对其schema 进行严格定义的对象。

相反,弱类型的对象指的是只有在运行时才知道其schema 的对象。

例如,DataReader 和DataSet (默认)是弱类型对象,因为它们的schema 是由用来填充它们的数据库查询返回的列来定义的。

要访问弱类型DataTable 中的某列,需要使用如下语法:DataTable.Rows[index]["columnName"]。

我们需要使用字符串或序号索引访问列名这一点就显示了该例中DataTable 的弱类型特性。

另一方面,强类型的DataTable 有各自作为属性实现的列,生成如下代码:DataTable.Rows[index].columnName。

要返回强类型对象,开发人员可以创建他们自己的自定义业务对象或使用Typed DataSet 。

一个业务对象由开发人员实现成一个类,该类的属性通常反映出该业务对象表示的基础数据库表的列。

Typed DataSet 是由Visual Studio 基于数据库schema 为您生成的一个类,其成员都是强类型的。

Typed DataSet 本身包括了拓展 DataSet 、DataTable 和DataRow 类的类。

除强类型DataTable 外,Typed DataSet 现在还包括TableAdapter ,该类具有填充DataSet 的DataTable 以及将DataTable 中所作修改传回数据库的方法。

注意:有关使用Typed DataSet 与自定义业务对象的优劣比较的更多信息,请参见设计数据层组件并在层间传递数据。

我们对这些教程的体系结构使用强类型的DataSet 。

图 3 说明了使用Typed DataSet 的应用程序不同层间的工作流程。

图3 :所有的数据访问代码都在DAL 中定义创建一个Typed DataSet 和Table Adapter要创建我们的DAL ,要先将一个Typed DataSet 添加到我们的项目。

为此,右键单击Solution Explorer 中的项目节点,并选择Add a New Item 。

从模板列表中选择DataSet 选项,并将其命名为Northwind.xsd。

图4 :选择添加一个新的DataSet 到您的项目单击Add 后,出现提示添加DataSet 到App_Code文件夹,选择Yes 。

接着出现Typed DataSet 设计器并将启动TableAdapter Configuration Wizard ,允许您将您的第一个TableAdapter 添加到Typed DataSet 。

相关文档
最新文档