在dal层的方法中加上IDbTransaction 参数可行吗

lawbc 2009-03-23 11:05:33
rt
就是为了在bll层可以控制事务,这样有什么不方便的吗,
我问了好几个朋友都是这样做的,不过个人觉得有点繁琐,因为我需不需要事务都一定要传事务参数,
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang355 2009-03-23
  • 打赏
  • 举报
回复
不可以,不要这么做
lawbc 2009-03-23
  • 打赏
  • 举报
回复
请问ls,你在bll层调用事务处理是怎么弄的啊,或者根本在bll层就没有事务,全部放到dal层做掉了
我不懂电脑 2009-03-23
  • 打赏
  • 举报
回复
不过个人觉得有点繁琐,因为我需不需要事务都一定要传事务参数
不麻烦,你可以用函数重载使事务参数成为C++中那样的默认参数,这样就不用传了。
lawbc 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wang355 的回复:]
不可以,不要这么做
[/Quote]
请问你的理由是什么
人生就是赌 2009-03-23
  • 打赏
  • 举报
回复
你可以重载方法啊
例如:我只是提供思路,方法里面的代码可能并不适合你,你可以根据自己的情况,修改一下

/// <summary>
/// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询!
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="cmdType">sql语句类型</param>
/// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param>
/// <param name="parameters">参数列表</param>
/// <returns></returns>
public static bool ExecuteNonQuery(string sql, CommandType cmdType, string connString, params DbParameter[] parameters)
{
DbConnection conn = DbFactory.CreateConnection();
conn.ConnectionString = connString;
DbCommand cmd = DbFactory.CreateCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.CommandType = cmdType;
AddParams(parameters, cmd);
try
{
Open(conn);
int returnCount = 0;
returnCount = cmd.ExecuteNonQuery();
if (returnCount > 0)
return true;
return false;
}
catch (Exception e)
{
throw e;
}
finally
{
Close(conn);
cmd.Dispose();
cmd.Parameters.Clear();
}
}
/// <summary>
/// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询!
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="cmdType">sql语句类型</param>
/// <param name="transaction">sql事务</param>
/// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param>
/// <param name="parameters">参数列表</param>
/// <returns></returns>
public static bool ExecuteNonQuery(string sql, CommandType cmdType, DbTransaction transaction, string connString, params DbParameter[] parameters)
{
DbConnection conn = DbFactory.CreateConnection();
conn.ConnectionString = connString;
DbCommand cmd = DbFactory.CreateCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.CommandType = cmdType;
AddParams(parameters, cmd);
try
{
Open(conn);
transaction = conn.BeginTransaction();
cmd.Transaction = transaction;
int returnCount = 0;
returnCount = cmd.ExecuteNonQuery();
transaction.Commit();
if (returnCount > 0)
return true;
return false;
}
catch (Exception e)
{
transaction.Rollback();
throw e;
}
finally
{
Close(conn);
cmd.Dispose();
cmd.Parameters.Clear();
}
}

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧