none
ASP.NET 三层结构如何利用DataSet 进行并发控制?? RRS feed

  • 问题

  • 1. Dataset 应该放在哪层?如果放在表示层,当页面刷新时,如何保存DataSet的值? 
    2. 多个客户端同时操作一DataSet中数据,如何保证数据的一致性.  
    2009年4月22日 11:01

答案

  • 1
    一般3层系统中 强类型化的datarow  
    是声明并且产生自在数据层 
    在逻辑层被当作实体被处理 
    最后当作结果发送到表现层的. 
    dataset 被看成 多个datarow集合(table)带有关系结构的总集合,和datarow 同时存在

    2
    多个client 操作同一个服务器dataset实例  其实对字段的修改不需要考虑并发冲突   
    如果你是说 多个client 具有多个dataset实例  那么需要在 sqladepter 的更新语句中  进行并发的判断

    具体可以参考tableadepter的向导中 在"并发控制"checkbox 是否选中 生成sql代码的不同

    比如不做并发控制    sql代码可能是
    update  table1  set  value=@value  where id=@id;

    打开并发控制  生成sql 代码就会变成
    update  table1  set  value=@value  where id=@id and id=@orgin_id and  value=@orgin_value;

    会检查是否有别人修改过这个字段

    如果发现更新结果为0行影响   自动返回并发异常   这样可以做进一步处理


    工作突然有点忙 嘿嘿
    2009年4月22日 14:58