方法的事务处理或一个集作为参数传给存储过程

yuesongboy 2007-01-23 03:55:25
谁能回答?分不够,我再加150分~~

问题一:
A层为表示层--> B层为数据操作-->C层数据操作通用层-->D数据库
以上层次
我A中调用方法B,注意B没有使用ADO.NET,但现在我的A在操作B的时候,我有可能执行
多个B方法,这些方法是操作数据的,

我想在A中实现事务,还能实现吗?

如果不行,那就请教问题二
问题二:
把一个List<>之类的集如何作为参数传到存储过程,存储过程又是如何来
遍历它?
...全文
214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujia_0421 2007-01-23
  • 打赏
  • 举报
回复
对于问题一:

能不能用事务还得看具体情况,要保证你的所有方法中用的是同一个Connection,在调用方法之前用这个Connection开启一个事务,方法中的所有Command的Transaction都要设置成同一个事务(即由前面的Connection开启的事务)..只有这样才可以..

也就是说想做在一个事务里的所有Command都共一个Transaction..

for example:

SqlConnection con=new SqlConnection("..");
SqlTransaction tran=con.BeginTransaction();
SqlCommand cmd1=new SqlCommand("..",con);
cmd1.Transaction=tran;
SqlCommand cmd2=new SqlCommand("..",con);
cmd2.Transaction=tran;
....
//执行
....
//如果没有异常tran.Commit();
//如果有异常tran.RollBack();
...


TO:问题二

我也觉得这样的逻辑最好不要交给数据库来处理,效率低,也不利于管理 ...
hertcloud 2007-01-23
  • 打赏
  • 举报
回复
hbxtlhx(平民百姓) ( ) 信誉:112 Blog 2007-1-23 16:01:06 得分: 0



问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.

第二个问题也可以解决,不过不是直接把List<>传到存储过程,而是把这个List<>组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.



这个说的不错
不过第二个 我想 这样的逻辑处理还是不交给Sql为妙
毕竟程序是人写的 易于维护和理解 也很重要 我相信不在Sql里面楼主需要的功能肯定也可以实现
北京的雾霾天 2007-01-23
  • 打赏
  • 举报
回复
BeginTransaction不只有SqlConnection有,其它的连接对象也是有的.你可以用OleDB的,也有这样的方法.

如果你在你的A中没有涉及到对Connection的操作,那么BeginTransaction这样的方法也就不会起作用了.

如果真的是这样的话,那最好把事务的操作放到存储过程之类的数据库服务端,这样由数据库来对事务操作.
yuesongboy 2007-01-23
  • 打赏
  • 举报
回复
@hbxtlhx(平民百姓)
我的C层是封装好的,我也不想改就业我的B层,只想在A层中实现事务,问题时,我如果现在实现SqlConnection.BeginTransaction是否有用?本身我的系统可以能过配置转到其它数据库,如果写死了,不是不利?

@james_hunter(辉)
暂时不用NHibernate等orm工具
james_hunter 2007-01-23
  • 打赏
  • 举报
回复
我们一般在自己的项目中,使用NHibernate等持久化工具来维持高层的事务支持,类似这些工具,构建事务对象,并将事物对象构造在表示层(其实一般是逻辑层)中,虽然增加了不同层次的耦合,但是并没有太大坏处。
关于向数据库传递复杂对象,我想只要可以序列化,就没有问题吧。
北京的雾霾天 2007-01-23
  • 打赏
  • 举报
回复
问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.

第二个问题也可以解决,不过不是直接把List<>传到存储过程,而是把这个List<>组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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