ASP.NET页面级别的事务
ASP.NET事务可以说是在.NET平台上事务实现方式最简单的一种,你仅仅需要一行代码即可。在aspx的页面声明中加一个额外的属性,即事务属性Transaction="Required",它有如下的值:Disabled(默认)、NotSupported、Supported、Required和RequiresNew,这些设置和COM+及企业级服务中的设置一样,典型的一个例子是如果你想在页面上下文中运行事务,那么要将其设置为Required。如果页面中包含有用户控件,那么这些控件也会包含到事务中,事务会存在于页面的每个地方。
代码示例: |
页面声明Transaction="Required":
<%@ Page Transaction="Required" Language="C#" AutoEventWireup="true"
CodeBehind="WebForm3.aspx.cs" Inherits="WebApplication4.WebForm3" %>
页面引用:using System.EnterpriseServices;。
然后,数据操作代码:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Work1();
Work2();
ContextUtil.SetComplete(); //提交事务
}
catch (System.Exception except)
{
ContextUtil.SetAbort(); //撤销事务
Response.Write(except.Message);
}
}
private void Work1()
{
string conString = "data source=127.0.0.1;database=codematic;user id=sa;
password=";
SqlConnection myConnection = new SqlConnection(conString);
string strSql = "Insert Into P_Category(CategoryId,Name)values('1',
'test1')";
SqlCommand myCommand = new SqlCommand(strSql, myConnection);
myConnection.Open();
int rows = myCommand.ExecuteNonQuery();
myConnection.Close();
}
private void Work2()
{
string conString = "data source=127.0.0.1;database=codematic;user id=sa;
password=";
SqlConnection myConnection = new SqlConnection(conString);
string strSql = "Insert Into P_Category(CategoryId,Name)values('2',
'test2')";
SqlCommand myCommand = new SqlCommand(strSql, myConnection);
myConnection.Open();
int rows = myCommand.ExecuteNonQuery();
myConnection.Close();
}
ContextUtil是用于获取 COM+ 上下文信息的首选类。由于此类的成员全部为static,因此在使用其成员之前不需要对此类进行实例化。
ASP.NET页面事务的优势和限制如下。
l 优势:实现简单,不需要额外的编码。
l限制:页面的所有代码都是同一个事务,这样的事务可能会很大,而也许我们需要的是分开的、小的事务实现在Web层
ASP.NET页面级别的事务相关推荐
- ASP.NET页面与IIS底层交互和工作原理详解 (二)
第三回: 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IHttpHandler ...
- asp.net学习笔记异常处理001---.framework4.0中asp.net页面ValidateRequest=false 无效的问题
在做牛腩新闻发布系统的时候,部分同学可能会遇到这样的情况: 从客户端(ContentPlaceHolder1_m_ContentPlaceHolder_ftbContent="<P&g ...
- FineUI秘密花园(四) — 页面级别的配置
每一个使用FineUI控件的页面都必须包含一个PageManager控件,我们可以把PageManager控件看做页面级别的参数配置(相对于Web.config站点级别的参数配置). 页面级别的参数配 ...
- ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- [转]ASP.NET页面生命周期描述
ASP.NET页面生命周期描述 vigorID:Vigorcsdn 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的 下面是AS ...
- ASP.NET页面错误处理
ASP.NET页面错误处理 ASP.NET应用可以再代码中利用异常捕获来处理错误(try.catch)但是应用出现的所有错误,都用异常捕获来处理是一种不良的编程习惯.try.catch使用简单,但是过 ...
- ASP.NET页面动态添加js脚本
有时我们需要生成自己的JavaScript代码并在运行时动态添加到页面,接下来我们来看一下如何将生成的JavaScript代码动态添加到ASP.NET页面. 为了添加脚本,要将自定义的脚本在一个字符串 ...
- ASP.NET页面缓存介绍
尽管本文的作者写的很简单,但是相信通过这些文字,还是能对大家了解ASP.NET页面缓存有很大的帮助. 前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能 ...
- 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好
在asp.net页面中经常会出现一些ViewState的html标记,也许某些时候你会禁用ViewState,但是某些情况下你不得不使用它--因为它的便捷性,但是由于在默认情况下,ViewState的 ...
最新文章
- Socket编程 - 网络基础知识
- Scan Chain的原理与实现(实践) - Compression Flow
- 异步asynctask
- 易语言单窗口单ip软件源码_梦幻西游怎样多开ip转金?十大攻略秘籍速来看
- java system sleep_详解Java中的sleep()和wait()的区别
- python创建和删除文件
- Memcache的 简介
- Android Studio connot resolve symbol XXX 无法解析的符号
- android x5内核 下载地址,X浏览器-X5内核版本
- Android10源码下载和编译(解锁/刷机)
- Windows安装Redis新手教程
- K8S搭建redis集群(2)使用redis-trib
- 需求工程规格说明、需求验证、需求管理
- 北大计算机研究生有多神仙,北大考研成绩公布,还上“热搜”,这都是些什么“神仙分数”?...
- 电脑通过二维码打开手机链接
- gem5 GPGPU-Sim 安装踩坑笔记
- CAD二次开发之LISP读取excel数据
- JVM老生代增长过快问题排查
- android 使用百度全景sdk出现的问题
- PHP连接.mdb文件
热门文章
- python get argument_Python-Web框架-get_argument方法
- 美国不要求计算机背景的学校,美国哪些院校计算机专业不需要CS背景
- PHP怎么输入表达式,PHP: 表达式 - Manual
- 1.17.Flink 并行度详解(Parallel)、TaskManager与Slot、Operator Level、Execution Environment Level、Client Level等
- Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Mysqlbackup 8全备增量备份还原案例
- 书籍折页是什么效果_Word的书籍折页是什么 如何设置Word的书籍折页
- k8s查看pod的yaml文件_K8S系列学习,Pod实战那些事儿,有必要知道知道
- Flutter 基础Widgets Text()之TextStyle详解