Asp.net 在三层架构中事务的使用实例代码
在编程的世界里,事务管理无疑是确保数据完整性和可靠性的关键要素之一。我所了解的,执行事务有两种主要方式:自动事务和普通的SqlTransaction。对于不熟悉服务器配置的朋友来说,自动事务因其简单易用而备受青睐。如果你使用的是web共享主机,由于权限限制,这种方式可能并不适用。那么,我们重点来谈谈最普通的事务处理方式——SqlTransaction。
接触三层架构有一段时间了,对于如何在三层架构中使用事务,我曾在一段时间内感到迷茫。应该放在Sqlhelper里?DAL(数据访问层)?还是BLL(业务逻辑层)?经过多次百度和参考前辈高手的意见,我最终决定将事务逻辑放在业务逻辑层。数据库处理仍然由SQLHELPER完成,BLL层通过SqlTransaction事务传递值访问DAL层,再访问Sqlhelper。下面我将展示相关的代码块。
首先是Sqlhelper的代码:
```csharp
private static SqlConnection Cnn = new SqlConnection(DbConfig.ConnectionString);
region 判断SqlConnection是否开启连接并开启
///
/// 判断SqlConnection是否开启连接并开启
///
///
private static SqlConnection GetCnn() {
if (Cnn.State == ConnectionState.Closed) {
Cnn.Open();
}
return Cnn;
}
endregion
region 关闭数据库连接
///
/// 关闭数据库连接
///
public static void CloseCnn() {
Cnn.Close();
}
endregion
region 产生一个事务并开始
///
/// 产生一个事务并开始
///
///
public static SqlTransaction BeginTransaction() {
SqlTransaction tran = GetCnn().BeginTransaction();
return tran;
}
endregion
```
接着是DAL(数据访问层)的代码:
```csharp
public bool test(int i, SqlTransaction tran) {
string sql = "insert into [test]([item]) values(@i)";
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@i", i) };
return sqlhelper.ExecutenQuery(sql, paras, CommandType.Text, tran) > 0;
}
```
最后是BLL(业务逻辑层)的代码:
```csharp
UserDAO userdao = new UserDAO();
public bool test() {
using (SqlTransaction tran = SQLHelper.BeginTransaction()) {
try {
编程语言
- Asp.net 在三层架构中事务的使用实例代码
- 简单解析PHP程序的运行流程
- asp.net控件DataList分页用法
- php实现统计网站在线人数的方法
- 详解vue模拟加载更多功能(数据追加)
- angular将html代码输出为内容的实例
- javascript实现平滑无缝滚动
- 利用浮层使select不可选的实现方法
- js实现点击链接后窗口缩小并居中的方法
- php导出csv格式数据并将数字转换成文本的思路以
- 深入浅析Node环境和浏览器的区别
- javascript用正则表达式过滤空格的实现代码
- vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
- 关于vue v-for循环解决img标签的src动态绑定问题
- 去除HTML标签删除HTML示例代码
- javascript实现Table间隔色以及选择高亮(和动态切换