乐观锁充分利用了底层框架的机制,如:EntityFramework的版本属性,这里就不多说了。

有必要说一下离线乐观锁,这里有两种场景,如果对象是从UI重建后,直接执行的Update(),这时的乐观锁检查是有EntityFramework这样的框架来完成的,如:

Code Snippet
  1.  public void Handle(UpdateTestGrid command)
  2. {
  3.     var testGridService = this.Service<TestGridService>();
  4.  
  5.     testGridService.Update(command.TestGridInfo);
  6. }

 

如果对象不是从UI重建,而是从数据库重建然后用UI里的数据执行修改的话,这时的乐观锁检查应该由对象自己负责,如:

Code Snippet
  1.  public void Handle(UpdateTestOrder command)
  2. {
  3.     var testOrderService = this.Service<TestOrderService>();
  4.  
  5.     var testOrder = testOrderService.Repository.Load(command.Id);
  6.     testOrder.CheckOptimisticKey(command.TestOrderInfo.OptimisticKey);
  7.     
  8.     command.UpdateTestOrder(testOrder);
  9.     testOrderService.Update(testOrder);
  10. }

 

Last edited Jul 5, 2013 at 8:55 AM by happyframework, version 2

Comments

No comments yet.