请教各位大哥们了, 大家都知道DataSet 是可以把数据读出来在本机进行数据操作,insert updata delete 等, 然后一并提交给数据库.
如果多个用户同时这样操作,会不会有问题,例如我先读出10条记录,然后作updata处理, 而另外一个人确已经在数据库中删除了其中五条, 我修改完后提交 数据库会怎样认可呢?
.net的DataSet是一个怎样的操作机制!!!谢谢了  一个菜问题  还是非常想了解一下

解决方案 »

  1.   

    DataSet是把数据取出来,加到内存中。
    你说的并发操作,别人把其中的部分记录删除了,你再来提交,更新数据库,这当然是不成功的。其他的都可以。
      

  2.   

    这是个挺头疼的问题。
    如果是企业信息系统,一般用户都会倾向于一个用户操作,别的用户就没权限更改(你要先询问用户是否认同此方法),这样你可以把某条数据数据是否处在编辑状态写到Application中,如果这条数据正在被某个用户编辑,那么就不允许其他用户更新。当然还有其他的并发操作锁定策略,你可以看《企业应用架构模式》
      

  3.   

    理论会,但实际很难遇到.
    你update时,就算是读出10条,但也不是同时提交吧...不可能同时改完了提交吧...
    提交一条时,和别人很难冲突的...
      

  4.   

    自己测试了下,确实如果这样做的话  提交肯定失败的,一般来说updata的是没有问题的,管家你是insert 和 delete 看来做这样的操作 只能两边一起做了 在dataset 里面插记录 同时在数据库也同样提交  个人感觉 dataset 是会判断 是否和数据库的行列一致的  
    谢谢各位 帮助 受益多多
      

  5.   

    sql server有事务处理的,当一个用户在修改数据时,可以利用事务处理,锁住这样的行,别的用户不能修改或删除
      

  6.   

    锁定就只有一个人用了  dataset 不是可以读到本机内存 然后在本机进行操作,最后一并提交。
    问题就是当最后提交的时候,数据的行已经发生变化时,会导致系统的error暂时的方法在做delete 和insert的时候 两边都操作 呵呵 暂时还没有想到更好的方法