• ObjectDataSource和冲突检测[译]


    建立一个简单的Asp.net应用

    建立一个包含GridView和ObjectDataSource的Web页,后台数据库用SQL Server Express .  显示的表为 Customers Table .

    业务逻辑类

    ObjectDataSource控件连接到掌管CRUD的业务类Customers.  在这里你可以选择让ObjectDataSource 向Customers业务类返回一个实体类,而不是返回单独的字段列表.  我选择返回实体类,这里是Customer.

     ObjectDataSource 控件的设置如下:

    <asp:ObjectDataSource
    ID="ObjectDataSource1"
    TypeName="Customers"
    DataObjectTypeName="Customer"
    DeleteMethod="DeleteCustomer"
    InsertMethod="InsertCustomer"
    SelectMethod="GetCustomers"
    UpdateMethod="UpdateCustomer"
    runat="server">
    ...
    </asp:ObjectDataSource>

    冲突检测

    ObjectDataSource 控件有一个属性, 叫做冲突检测.  可以设置再应用程序中如何处理并发冲突.

    默认设置为OverwriteChanges, 这是最小化的并发冲突设置,使用于单用户的情况或者后来者覆盖是可以接受的.  如果覆盖是不可接受的请选择 CompareAllValues, 这将给予你最大的灵活性,可以处理数据记录发生的变化.

    ConflictDetection = Overwrite Changes

    当我选择OverwriteChanges的时候,我的Update方法声明如下:

    ObjectDataSource控件将会传递一个单一的已更新的Customer类的实例 .  这个实例将会传递到数据访问层,最后一个人所作的变化将会写到数据库中.

    ConflictDetection = CompareAllValues

    当我选择 CompareAllValues, 我的Update方法将会如下声明:

    Update 方法将会接受2个 Customer Classes - 一个已经更新的实例,一个包含原始数据的实例.  因此我们可以传递两个实例到数据访问层,以便生成指定原始数据信息的Where条件,确保不会丢失数据.

    Update 方法期望的原始实体类参数名称为"original_customer" ,这可以通过设置属性OldValuesParameterFormatString来实现,例如我的ObjectDataSource控件的设置如下:

    <asp:ObjectDataSource
    ID="ObjectDataSource1"
    TypeName="Customers"
    DataObjectTypeName="Customer"
    DeleteMethod="DeleteCustomer"
    InsertMethod="InsertCustomer"
    SelectMethod="GetCustomers"
    UpdateMethod="UpdateCustomer"
    OldValuesParameterFormatString="original_{0}"
    ConflictDetection="CompareAllValues"
    runat="server">
    ...
    </asp:ObjectDataSource>

    结论:

    ObjectDataSource 控件提供了对数据并发更新的支持.  通过设置ConflictDetectionOldValuesParameterFormatString 这两个属性,你既可以访问包含已更新数据的实体类,也可以访问包含原始数据的实体类,因此你可以有多种方法实现并发控制.

     原文地址:http://codebetter.com/blogs/david.hayden/archive/2005/11/14/134620.aspx

  • 相关阅读:
    CentOS 7 iSCSI 多路径Multipath配置
    Centos7 GRE Tunnel
    ESXi开启虚拟化
    ownCloud 10.2.1搭建云盘服务器
    cinder不同类型volume转换
    linux的bond及子接口配置
    openstack 平台添加vGPU
    ownCloud 10.2.1搭建云盘服务器
    openstack nova 热迁移问题
    bugku-web40对git命令的使用
  • 原文地址:https://www.cnblogs.com/dajianshi/p/353675.html
Copyright © 2020-2023  润新知