开发者社区> 问答> 正文

请问框架支持悲观并发吗(updlock)锁:报错

能否在Query方法后面增加Lock接口,比方我想在查询某行数据时,使用updlock,readpast语句把行进行更新锁,并不读取已锁定的资源,以达到悲观并发的目的


或者框架本身有别的变通方式实现我的需求吗


1:事务开始

2:query并锁定我指定的行(同时忽略已锁定的资源)

3:进行相关业务并更新或回滚事务

4:提交事务


谢谢作者的辛苦

展开
收起
kun坤 2020-06-07 16:47:00 687 0
1 条回答
写回答
取消 提交回答
  • select for update######

    引用来自“乌龟壳”的评论

    select for update
    ???什么意思,里面有这个用法吗######说的是sql语句···看你用什么orm了···hibernate ?######

    引用来自“乌龟壳”的评论

    select for update

    引用来自“Knight_Dj”的评论

    ???什么意思,里面有这个用法吗
    就用这个chloe.orm啊,这个支持吗?######

    引用来自“乌龟壳”的评论

    select for update

    引用来自“Knight_Dj”的评论

    ???什么意思,里面有这个用法吗

    引用来自“Knight_Dj”的评论

    就用这个chloe.orm啊,这个支持吗?
    query并锁定指定的行,这个Chloe.ORM倒不支持。Chloe.ORM 框架解决的是数据库开发中80%的问题,对于您说的这个需求比较特俗,属于另外的20%之内。据我了解,目前还没发现可以满足这个需求的ORM,你做的项目我不了解,我想这样的需求在一个项目中不会很多,这种情况我建议您纯手动操控ado.net。
    ps:Chloe.ORM 倒是支持 Update T set price=price + 100 where Id=1 这样的写法
    context.Update<User>(a => new User() { Name = a.Name, Age = a.Age + 100
    , Gender = Gender.Man, OpTime = DateTime.Now }, a => a.Id == 1);
    
    /*
     * UPDATE [Users] SET [Name]=[Users].[Name],[Age]=([Users].[Age] + 100)
     *,[Gender]=1,[OpTime]=GETDATE() WHERE [Users].[Id] = 1
     */ 
    ,不知道是否可以绕过查询就开始锁定行的做法,从而解决您的问题。
    ######怎么么有事物提交呢?######事务有的。DbContext.CurrentSession.CommitTransaction();
    2020-06-07 16:47:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多线程 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多