Asp.net 在三层架构中事务的使用实例代码

网络编程 2025-03-24 23:48www.168986.cn编程入门

在编程的世界里,事务管理无疑是确保数据完整性和可靠性的关键要素之一。我所了解的,执行事务有两种主要方式:自动事务和普通的SqlTransaction。对于不熟悉服务器配置的朋友来说,自动事务因其简单易用而备受青睐。如果你使用的是web共享主机,由于权限限制,这种方式可能并不适用。那么,我们重点来谈谈最普通的事务处理方式——SqlTransaction。

接触三层架构有一段时间了,对于如何在三层架构中使用事务,我曾在一段时间内感到迷茫。应该放在Sqlhelper里?DAL(数据访问层)?还是BLL(业务逻辑层)?经过多次百度和参考前辈高手的意见,我最终决定将事务逻辑放在业务逻辑层。数据库处理仍然由SQLHELPER完成,BLL层通过SqlTransaction事务传递值访问DAL层,再访问Sqlhelper。下面我将展示相关的代码块。

首先是Sqlhelper的代码:

```csharp

private static SqlConnection Cnn = new SqlConnection(DbConfig.ConnectionString);

region 判断SqlConnection是否开启连接并开启

///

/// 判断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 {

上一篇:简单解析PHP程序的运行流程 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by