和大家讨论一下 web 系统中 数据库事务问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flyingfz
V2EX    .NET

和大家讨论一下 web 系统中 数据库事务问题

  •  
  •   flyingfz 2017 年 3 月 4 日 2555 次点击
    这是一个创建于 3275 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各个方法里,使用 同一个 GetConnection()函数 获取 SqlConnection 。

    然后, 当 请求开始的时候, 构造一个 ThreadStatic 的 SqlConnection ,同时在这个 SqlConnection 的实例上 BeginTranstion , 这个 SqlConnection 实例 也就是前面提到 GetConnection() 返回给各个方法的 实例 ,

    然后,在请求结束的时候, 如果没有异常,就进行 Commit .

    之所以想这么实现,因为在一个 web 请求的过程中,会多次会对数据库进行操作,这些方法可能分布在 各个类中,所以,我想通过这种机制来进行基于 web 请求生命周期的 事务控制。

    不知道这样的功能是否实用? 大家怎么看? 或者有什么建议?

    4 条回复    2017-03-05 14:26:06 +08:00
    darrenfang
        1
    darrenfang  
       2017 年 3 月 4 日 via iPhone
    在 Application Service 中进行事务控制。调用 Application Service 的时候开启事务,结束提交事务,异常回滚事务。当然手写这些代码很麻烦,用 AOP 简单很多,例如 Ninject.Extensions.Interception
    ihuotui
        2
    ihuotui  
       2017 年 3 月 4 日 via iPhone
    知道 aop 吗?
    wind3110991
        3
    wind3110991  
       2017 年 3 月 5 日
    对于简单的流程操作,这样的思路是可以的,
    但是要记得在 SqlConnection 中加上 mysql_ping(), threadStatic 的 SqlConnection 对超时连接进行重连
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1892 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:25 PVG 23:25 LAX 07:25 JFK 10:25
    Do have faith in what you're doing.
    ubaomsnsnddmindexpchomeyahoorakutenmypapermeadowduckbidyahooyoubaozxmzxmasdabnvcgcvbfgdfscvmmhjkxxddcyybgbzznbnccubaouaituacvGXCVETGDGYHFGBCVBFJFHCBRECBCGDGET54WRWRRWERWREWWRWERRWERSDGEWSFDSFSFfbbsubaofhddfgewrdgdfewwrewwretruyutututdfgfgdgdfgtetgdfgtdfgdert4gdfggwr235wer3wevsdfsdfgdfertxcvsdfrwerhfddfgcvbrwfafbdfhjghbmnlghrtygfdscxvxcvxcsvdasfdffgdcvsdftertsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfshasha9178shasha9178shasha9178shasha9178shasha9178liflif2liflif2liflif2liflif2liflif2liblib3liblib3liblib3liblib3liblib3zhazha444zhazha444zhazha444zhazha444zhazha444dende5dendedendendenden2denden21fenfen9fenf619fen619fenfe9fe619sdfsdfsdfsdfsdfzhazh90zhazh0zhaa50zha90zh590zhozhozzhozhzhozhozhozho2lislislls95lili95lils5liss9sdf0ty987sdft876sdft9876sdf09876sd0t9876sdf0ty98sdf0976sdf0ty986sdf0ty96sdf0t76sdf0876df0ty98sf0t876sd0ty76sdy76sdf76sdf0t76sdf0ty9sdf0ty98sdf0ty987sdf0ty98sdf6676sdf876sd876sd876sdf6sdf6sdf9876sdf0tsdf06sdf0ty9776sdf0ty9776sdf0ty76sdf8876sdf0tsd6sdf06s688876sd688sdf86
    flyingfz
        4
    flyingfz  
    OP
       2017 年 3 月 5 日
    多谢回复, 我了解下。 @darrenfang @ihuotui @wind3110991