asp.net 事务处理

iwalk 2010-10-02 12:09:46
asp.net开发数据库应用,查了很多资料,一般都是建议在用的时候动态创建数据库连接,用完马上close,
如果一个业务逻辑涉及到多个类进行数据处理,这些类分别动态创建数据库连接,
这样就同时存在多个连接,那么怎样实现事务处理呢?
(不用TransactionScope,效率太低)
...全文
116 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Airch 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wubudang 的回复:]
引用 9 楼 sp1234 的回复:
引用 8 楼 wubudang 的回复:
以前公司用事务多,现在基本不用事务了。


我看不懂这是什么意思呀?!

其实我能理解,但是绝对不是说一个公司“不用事务”,而是因为你不去理解深入的东西(我相信如果你深入去看自己公司的源代码,一定可以看到)。


回答lz的问题。基本上业务逻辑层每一个功能对应界面表现层一个功能,是一一对应的!例如表……
[/Quote]
程序员的悲哀
wubudang 2010-10-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sp1234 的回复:]
引用 8 楼 wubudang 的回复:
以前公司用事务多,现在基本不用事务了。


我看不懂这是什么意思呀?!

其实我能理解,但是绝对不是说一个公司“不用事务”,而是因为你不去理解深入的东西(我相信如果你深入去看自己公司的源代码,一定可以看到)。


回答lz的问题。基本上业务逻辑层每一个功能对应界面表现层一个功能,是一一对应的!例如表现层查询一个结果集合,然后绑定到界面组件……
[/Quote]
其实事务如果是我自己写代码还是会用的,但是老板不让用,说看不懂。事务这东西有时候还是要用的。很多时候我给客户擦屁股,都是没写事务造成的。生杀大权都在老板那,老板让你往东,你说往东不行要往西,老板说就按招老板的意思做,后来往东错了,老板过来骂我怎么不坚持往西,我擦。
  • 打赏
  • 举报
回复
对应界面表现层一个功能,是一一对应的 --> 对应界面表现层一个功能,是一一对应或者多对一对应的

但不是一对多对应的。
threenewbee 2010-10-03
  • 打赏
  • 举报
回复
脱机操纵数据,再提交。需要处理同步问题。
  • 打赏
  • 举报
回复
至于说业务服务功能的参数何时会出现 IDbTranaction,这可以是业务层内部的事。例如原来有独立的
Method1(...);
Method2(...);
现在需要有Method3将它们组合在一个事务中,那么可能将Method1、2中的代码重构到新的
internal Method1Sub(...,DBTransaction trans);
internal Method2Sub(...,DBTransaction trans);
而原来的两个Method1、2,以及Method3,都是使用这两个重构的internal的Method来实现的。

也就是说,事务是可以在业务逻辑层内部隐藏起来的,对外表现时不需要外部关心如何实现的事务处理。


  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wubudang 的回复:]
以前公司用事务多,现在基本不用事务了。
[/Quote]

我看不懂这是什么意思呀?!

其实我能理解,但是绝对不是说一个公司“不用事务”,而是因为你不去理解深入的东西(我相信如果你深入去看自己公司的源代码,一定可以看到)。


回答lz的问题。基本上业务逻辑层每一个功能对应界面表现层一个功能,是一一对应的!例如表现层查询一个结果集合,然后绑定到界面组件上;或者,它提交一个修改给业务逻辑层。总之,事务都是很自然地包含在业务逻辑层的一个功能内部。业务逻辑层如果跨多个功能需要共享事务,这就说明你的业务逻辑层定义不准确,需要定义出一个更加独立、高内聚的、将几个功能合二为一的业务服务功能出来。
wubudang 2010-10-03
  • 打赏
  • 举报
回复
以前公司用事务多,现在基本不用事务了。
teerhu 2010-10-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 heddaz 的回复:]
看是否有优化到一起的可能,如果比较复杂,利用存储过程肯定要比逐个的创建实例调用要好。
类之间的耦合少一些为好。
[/Quote]
up
liujuan01 2010-10-03
  • 打赏
  • 举报
回复
数据库操作类 以前学过 还有些印象 嘿嘿
肄若芸 2010-10-03
  • 打赏
  • 举报
回复
建议先考虑好“事务”逻辑,再选择如何连接数据并使用数据库。

具体使用数据库基本上没有人自己写了,比如楼上几位说的使用DBHelper、ENT LIB等
wuyq11 2010-10-02
  • 打赏
  • 举报
回复
数据库操作类
SqlDBConnection是基于连接池的,连接池里有同样的连接的话,会从连接池中取
业务层中不用connection.
在dal中声明一个属性来包装DbTransaction,
bll中得到.用事务的方法传同一个DbTransaction
using(IDbTransaction tran=CreateTransaction())
{
Method1(tran);
Method2(tran);
tran.Commit();
}
iwalk 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
数据库操作类
SqlDBConnection是基于连接池的,连接池里有同样的连接的话,会从连接池中取
业务层中不用connection.
在dal中声明一个属性来包装DbTransaction,
bll中得到.用事务的方法传同一个DbTransaction
using(IDbTransaction tran=CreateTransaction())
{
Method1(tran)……
[/Quote]

SqlDBConnection是基于连接池的,连接池里有同样的连接的话,会从连接池中取

请教:什么样的连接是同样的连接?
begintransaction 2010-10-02
  • 打赏
  • 举报
回复
关注学习下。
大飞飞虫 2010-10-02
  • 打赏
  • 举报
回复
看是否有优化到一起的可能,如果比较复杂,利用存储过程肯定要比逐个的创建实例调用要好。
类之间的耦合少一些为好。

62,271

社区成员

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

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

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

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