在 ASP.NET 中创建数据访问和业务逻辑层(转)
当在 ASP.NET 中处理数据时,可从使用通用软件模式中受益。其中一种模式是将数据访问代码与控制数据访问或提供其他业务规则的业务逻辑代码分开。在此模式中,这两个层均与表示层分离。表示层由网站用户有权查看或更改数据的页面组成。
ASP.NET 可通过多种方式提供数据访问、业务逻辑和表示形式之间的分离。例如,数据源模型(包括 LinqDataSource 和 ObjectDataSource 等服务器控件)可将表示层与数据访问代码和业务逻辑分离。
另一种模式是将数据访问逻辑直接包括在 ASP.NET 页(表示层)中。例如,可以在 ASP.NET 页的代码隐藏页中编写 ADO.NET 代码,或者使用 SqlDataSource 控件。此方法可将数据访问逻辑与表示层紧密耦合在一起。
建议的方法是将数据访问逻辑与表示层分离。此分离层称为数据访问层。数据访问层可实现为单独的类库项目。但是,您也可以使用 Visual Web Developer 中的工具生成数据访问层。
说明: |
---|
在 Microsoft Visual Web Developer 速成版中,不能创建类库项目。但是,您可以先使用 Visual Basic 速成版或 Visual C# 速成版创建单独的项目,然后再将该类的输出作为程序集 (DLL) 包括在网站中。 |
如果网站要显示或更新数据,则应先创建数据访问层和业务逻辑层,然后再创建用户界面。
数据驱动的 Web 应用程序通常使用表示数据的类型化数据集或实体类来添加数据访问层。它还包含强制实施自定义业务规则的业务逻辑层。最后,它使用 ASP.NET 页添加表示层,并通过母版页和主题创建通用的页面布局。本演练演示如何创建数据访问层。
数据访问层包含特定于基础数据源的所有代码。其中包括创建数据库连接的代码,以及发出 Select、Insert、Update 和 Delete 命令的代码。数据访问层通常包含用于实现访问基础数据库数据的方法的类。表示层不直接处理数据,而是为所有数据请求调用数据访问层中的类和方法。
本演练涉及以下任务:
创建 SQL 数据库和添加数据。
添加充当数据访问层的“Linq to SQL”文件。
创建用作表示层的页面。
向页面中添加在表示层和数据访问层之间通信的 LinqDataSource 控件。
若要完成此演练,需要以下组件:
Microsoft Visual Studio 2008 或 Microsoft Visual Web Developer 速成版。有关下载信息,请参见 Visual Studio Developer Center(Visual Studio 开发中心)网站。
.NET Framework 3.5 版。
SQL Server Express Edition。如果已安装 Microsoft SQL Server,则也可以直接使用该软件。
第一步是创建网站。
创建新的文件系统网站
打开 Visual Studio 2008 或 Visual Web Developer 速成版。
在“文件”菜单中单击“新建网站”。
显示“新建网站”对话框。
在“Visual Studio 已安装的模板”下选择“ASP.NET 网站”。
在“位置”框中单击“文件系统”,然后键入要在其中保存网站文件的文件夹的名称。
例如,键入“C:\BasicWebSite”。
在“语言”列表中,单击“Visual Basic”或“Visual C#”,然后单击“确定”。
说明: 您选择的编程语言将成为网站的默认编程语言。但是,也可以为每个页单独设置编程语言。
Visual Web Developer 将创建该文件夹以及名为 Default.aspx 的新页。
下一步是使用“服务器资源管理器”窗口连接至 Visual Web Developer 中的数据库(在 Visual Web Developer 速成版中,该窗口名为“数据库资源管理器”)。通过在“服务器资源管理器”中创建数据库连接,可以添加表、存储过程、视图及其他数据库元素,所有这一切都在 Visual Studio 中进行。另外,您还可以查看表数据或创建查询,此操作可手动完成,也可以使用查询生成器窗口完成。
在本演练后面将为数据访问层生成类型化数据集,届时必须在 Visual Web Developer 中创建指向数据库的连接。您可以手动提供连接信息。但是,Visual Web Developer 可以简化此过程,因为它会自动填充已在“服务器资源管理器”中注册的数据库列表。
在本演练中,将创建一个新数据库以跟踪各个任务项。
在本节中,将创建一个新的 SQL Server Express 数据库,以存储待办事项列表中的任务信息。
向网站中添加数据库
在“解决方案资源管理器”中,右击网站的名称,然后单击“添加新项”。
将显示“添加新项”窗口。
选择“SQL 数据库”,并将数据库命名为“Tasks.mdf”。
单击“确定”。
当 Visual Web Developer 询问是否应将该数据库存储在 App_Data 文件夹中时,请单击“是”。
为 Tasks 数据库创建架构和示例数据
您可以使用数据库设计和编辑功能为存储任务项的表创建架构。
为 Tasks 数据库定义架构并添加数据
在“解决方案资源管理器”中打开“App_Data”文件夹,然后双击 Tasks.mdf。
随即将在“服务器资源管理器”中打开“Tasks”数据库节点。
右击“表”文件夹,然后单击“添加新表”。
将显示表定义窗口。
在表中创建以下列:
列名
数据类型
属性
taskId
int
不为 null
name
nvarchar(50)
不为 null
dateCreated
datetime
不为 null
isComplete
bit
不为 null
选择 taskId 列所在的行,右击该行,然后单击“设置主键”。
选择 taskid 行,然后在“列属性”窗口中找到“标识规范”[Identify Specification]部分。
打开该部分,然后将“(是标识)”设置为“是”。
保存该表,将其命名为“TasksList”,然后关闭表定义窗口。
在“服务器资源管理器”中右击该表,然后单击“显示表数据”。
将显示一个编辑窗口,您可以在其中查看、添加和编辑数据。
向该表中添加四到五个记录。
您无需指定 taskId 列的值,因为它是标识列,所以会被自动赋值。
关闭编辑窗口。
若要为刚才创建的数据库创建数据访问层和业务逻辑层,可以有多种方式。在本演练中,将创建一个表示数据库实体的类。随后,您可以将自己的业务逻辑添加到这些生成的类中(在本演练中,将不向类中添加业务逻辑)。
在本演练中,将使用语言集成查询 (LINQ) 处理数据。LINQ 将面向对象的编程原则应用于关系数据。LINQ 提供了一种用于在不同类型的数据源中查询和更新数据的统一编程模型,并将数据功能直接扩展到 C# 和 Visual Basic 语言中。有关 LINQ 的更多信息,请参见语言集成查询 (LINQ)。
您将使用 LINQ to SQL 类作为数据访问层。此外,还要使用 Visual Web Developer 中的“对象关系设计器”窗口生成表示数据的实体类。
将 Tasks 数据库映射到 SQL 数据上下文类
若要创建数据访问层,首先要向项目中添加类型化数据集。
创建 Tasks 表的类
如果网站中还没有 App_Code 文件夹,请在“解决方案资源管理器”中右击相应的项目,再单击“添加 ASP.NET 文件夹”,然后单击“App_Code”。
右击 App_Code 文件夹,然后单击“添加新项”。
显示“添加新项”对话框。
在“Visual Studio 已安装的模板”下,选择“LINQ to SQL 类”模板,然后将该文件重命名为“Tasks.dbml”。
单击“添加”。
此时将显示“对象关系设计器”窗口。
在“服务器资源管理器”中,将 TasksList 表拖到“对象关系设计器”窗口中。
保存 Tasks.dbml 文件。
Visual Web Developer 将在“App_Code”文件夹中 Tasks.dbml 的下方创建 Tasks.dbml.layout 文件。此外,它还会创建 Tasks.designer.cs 或 Tasks.designer.vb,具体取决于您所使用的编程语言。
在“解决方案资源管理器”中,打开 Tasks.designer.cs 或 Tasks.designer.vb 文件。
请注意,该代码包含名为 TasksDataContext 和 TasksList 的类。TasksDataContext 类表示数据库,TasksList 类则表示数据库表。TasksDataContext 类的无参数构造函数将从网站的配置文件 (Web.config) 中读取数据库连接字符串。
打开 Web.config 文件。
请注意,Tasks 数据库的连接字符串已添加到 connectionStrings 元素中。
关闭类文件和 Web.config 文件。
现在您已拥有一个数据库表以及若干表示数据库实体的类,下面便可以使用 ASP.NET 网页上的 LinqDataSource 来访问数据库。LinqDataSource 控件通过 ASP.NET 数据源控件结构向 Web 开发人员提供 LINQ 功能。
LinqDataSource 控件用于创建在数据库中选择、插入、更新和删除对象的代码。业务逻辑可以调用这些类来执行数据库函数并应用业务逻辑规则。
创建和配置 LinqDataSource 控件
打开或切换到 Default.aspx 页。
切换到“设计”视图。
从“工具箱”的“数据”选项卡中,将 LinqDataSource 控件拖到网页上。
您可以将 ID 属性保留为 LinqDataSource1。
在“LinqDataSource 任务”[LinqDataSource Tasks]智能标记面板中,单击“配置数据源”。
在上下文对象列表中,选择“TasksDataContext”,然后单击“下一步”。
在列表中,选择“TasksList(表<TasksList>)”[TasksLists(Table<TasksList>)],然后单击“完成”。
在“LinqDataSource 任务”智能标记面板中,选中“启用删除”、“启用插入”和“启用更新”复选框。
请注意,您不必为选择数据指定任何数据库命令。
运行该页。
该页将显示您在本演练前面输入的数据。
本演练阐释了如何使用“LINQ to SQL 类”模板和 LinqDataSource 服务器控件创建应用程序的数据访问层和业务逻辑层。您为网站页访问数据创建了一种既灵活、又不直接绑定到网站表示层的方法。
主题演练:创建支持 AJAX 的数据应用程序使用 LinqDataSource 控件创建支持 AJAX 的 Web 应用程序,以用于显示和更新 Tasks 数据库中的信息。
在 ASP.NET 中创建数据访问和业务逻辑层(转)的更多相关文章
- asp.net/wingtip/创建数据访问层
一. 什么是数据访问层 在wingtip项目中,数据访问层是对以下三者的总称:1. product类等数据相关的实体类(class)2. 数据库(database),对实体类成员的存储3. 上述二者的 ...
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
1.概述 首先需要声明的是设计模式和使用的框架以及语言是无关的,关键是要理解设计模式背后的原则,这样才能不管你用的是什么技术,都能够在实践中实现相应的设计模式. 按照最初提出者的介绍,Reposito ...
- ArcGIS Engine中的数据访问
ArcGIS Engine中的数据访问 数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文 ...
- 【译】在ASP.NET中创建PDF-iTextSharp起步
原文 [译]在ASP.NET中创建PDF-iTextSharp起步 .Net framework 中自身并不包含可以和pdf打交道的方法.所以,当你需要你的ASP.Net Web应用程序中包含创建或与 ...
- 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)
开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...
- ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑
上次搭建好了项目框架,但还是觉得不太对劲,后来才想起来没有对开发目标进行定位,这个小demo虽然不用做需求分析,但是要实现什么效果还得明确.后来想了一下就做个最简单的网站,目标定为小公司进行展示用的网 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2) ...
- 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑
前言 从上篇30岁找份程序员的工作(伪程序员的独白),文章开始,我说过我要用我自学的技术,来搭建一个博客系统,也希望大家给点意见,另外我很感谢博客园的各位朋友们,对我那篇算是自我阶段总结文章 ...
- 【干货】利用MVC5+EF6搭建博客系统(一)EF Code frist、实现泛型数据仓储以及业务逻辑
习MVC有一段时间了,决定自己写一套Demo了,写完源码再共享. PS:如果图片模糊,鼠标右击复制图片网址,然后在浏览器中打开即可. 一.框架搭建 二.创建数据库 1.创建一个空的EF code fr ...
随机推荐
- URi和Url格式
1.主要的区别 url一定是有scheme. uri不一定有scheme,可以是相对和绝对的.(相对是依赖环境的) 2.uri的结构(3种划分) 1)[scheme:]scheme-specific- ...
- js_多个引号的用法
str += "<input id='sel_DayB' width='120' onfocus=\"WdatePicker({skin:'whyGreen',dateFmt ...
- mybatis原理
http://blog.csdn.net/column/details/mybatis-principle.html?page=1
- JDBC总结(含DbUtils组件)
jdbc1. jdbc:使用java代码(程序)发送sql语句的技术2. jdbc的核心接口(查看API): java.sql Driver,DriverManger,Statement,Result ...
- 关于UIView的AutoresizingMask属性的研究
在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高. 1 2 3 4 5 6 7 8 9 enum ...
- 使用Kylin构建企业大数据分析平台的4种部署方式
本篇博客重点介绍如何使用Kylin来构建大数据分析平台.根据官网介绍,其实部署Kylin非常简单,称为非侵入式安装,也就是不需要去修改已有的 Hadoop大数据平台.你只需要根据的环境下载适合的Kyl ...
- R语言基础
一.扩展包的基本操作语句R安装好之后,默认自带了"stats" "graphics" "grDevices" "utils&qu ...
- css学习笔记 3
css选择符: 通配选择符:* 类选择符:.className 标签选择符 后代选择符:例:p strong ,选择的是p标签内的所有strong标签. 子选择符:> ,只选择父标签内的直接子标 ...
- ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名
连接excel odbc时发生如下问题: 是因为数据源(odbc)没有配置excel 驱动:控制面板->管理工具->数据源(ODBC): 添加: 如无效果,则可能是位数引起的,比如系统是6 ...
- JavaScript进阶知识点(慕课)
JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) 一. 数组 var myarray=n ...