方法的事务处理或一个集作为参数传给存储过程
谁能回答?分不够,我再加150分~~   
 问题一: 
 A层为表示层-->    B层为数据操作--> C层数据操作通用层--> D数据库 
 以上层次 
 我A中调用方法B,注意B没有使用ADO.NET,但现在我的A在操作B的时候,我有可能执行 
 多个B方法,这些方法是操作数据的,   
 我想在A中实现事务,还能实现吗?   
 如果不行,那就请教问题二 
 问题二: 
 把一个List <> 之类的集如何作为参数传到存储过程,存储过程又是如何来 
 遍历它? 
------解决方案--------------------问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.   
 第二个问题也可以解决,不过不是直接把List <> 传到存储过程,而是把这个List <> 组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.
------解决方案--------------------我们一般在自己的项目中,使用NHibernate等持久化工具来维持高层的事务支持,类似这些工具,构建事务对象,并将事物对象构造在表示层(其实一般是逻辑层)中,虽然增加了不同层次的耦合,但是并没有太大坏处。 
 关于向数据库传递复杂对象,我想只要可以序列化,就没有问题吧。
------解决方案--------------------hbxtlhx(平民百姓) ( ) 信誉:112    Blog  2007-1-23 16:01:06  得分: 0              
 问题一可以实现,它的实现可以来自SqlConnection.BeginTransaction 方法的实现,用这个方法开始一个事务,可以用Commit事务,也可RollBack事件.   
 第二个问题也可以解决,不过不是直接把List <> 传到存储过程,而是把这个List <> 组织成一个字符串,或Xml字符串,这样用Sql的系统存储过程来分析它.          
 这个说的不错 
 不过第二个 我想 这样的逻辑处理还是不交给Sql为妙 
 毕竟程序是人写的 易于维护和理解 也很重要 我相信不在Sql里面楼主需要的功能肯定也可以实现
------解决方案--------------------对于问题一:   
 能不能用事务还得看具体情况,要保证你的所有方法中用的是同一个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:问题二   
 我也觉得这样的逻辑最好不要交给数据库来处理,效率低,也不利于管理 ...