ObjectDataSource和冲突检测[译]
2006-04-11 18:04
204 查看
ObjectDataSource和冲突检测[译]
建立一个简单的Asp.net应用
建立一个包含GridView和ObjectDataSource的Web页,后台数据库用SQL Server Express . 显示的表为 Customers Table .
业务逻辑类
ObjectDataSource控件连接到掌管CRUD的业务类Customers. 在这里你可以选择让ObjectDataSource 向Customers业务类返回一个实体类,而不是返回单独的字段列表. 我选择返回实体类,这里是Customer.
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控件的设置如下:
结论:
ObjectDataSource 控件提供了对数据并发更新的支持. 通过设置ConflictDetection 和OldValuesParameterFormatString 这两个属性,你既可以访问包含已更新数据的实体类,也可以访问包含原始数据的实体类,因此你可以有多种方法实现并发控制.
建立一个简单的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 控件提供了对数据并发更新的支持. 通过设置ConflictDetection 和OldValuesParameterFormatString 这两个属性,你既可以访问包含已更新数据的实体类,也可以访问包含原始数据的实体类,因此你可以有多种方法实现并发控制.
相关文章推荐
- CSMA/CD中重传与冲突检测机制
- 开放式并发冲突检测的四种方法
- CSMA/CD 即载波监听多路访问/冲突检测方法
- PhysX学习记录 七 冲突检测
- arcmap 标签冲突检测--label feature
- [转].Net中删除数据前进行外键冲突检测
- [转]谈谈以太网中何时使用CSMACD冲突检测机制
- 在linux下检测arp冲突
- linux下ip冲突检测 && arp
- Linux检测IP地址冲突
- linux下写程序检测ip冲突(ARP)
- 看我如何用comp实现文件冲突检测
- linux arp z组播检测IP冲突
- Linux下IP冲突检测程序源码及分析(利用免费arp)---感谢原作者
- CSMA/CD(多路访问/冲突检测)
- DHCP之简要分析(包括C语言实现过程,IP冲突的检测与解决办法)
- linux下检测ip冲突
- 微软同步框架入门之四--冲突(Conflict)检测和处理
- 冲突检测协议
- Linux系统下配置多个IP及检测IP冲突的方法