我拜读了ms的petshop3.0,对于里面的framework已经熟悉了,接着就是细读代码。在读代码的时候,觉得有个问题。由于我没有sqlserver,所以看不到运行结果,求教了。
问题如下:
在你的Cart类里面如果用户A加入了商品Item1 2次,而Item1也就库存2件,没有问题,public void Add(string ItemId),但是没有提交订单。
用户B也同样进行以上的操作,他也会得到Item1 2件的承诺
当两个人同时提交订单的时候,问题就来了PetShop.BLL.OrderInsert.Insert会调用
inventory.TakeStock( order.LineItems);
我觉得一定会有个用户出错了,但是看了PetShop.SQLServerDAL.Inventory.TakeStock(LineItemInfo[] items)之后发现连try..catch都没有,我认为应该是不会报错了。是不是很奇怪啊?
求教ing,提出大家对petshop的看法把

解决方案 »

  1.   

    http://www.cnblogs.com/dwp008/archive/2006/07/24/458333.html
      

  2.   

    http://blog.csdn.net/xingyukun2006/archive/2006/08/04/1018124.aspx9.使用System.Transactions进行事务管理  这个名字空间也是2.0中刚刚加入的,这使得我们可以在不注册COM+事务的前提下处理分布事务。在PetShop.BLL.OrderSynchronous中有这样一段代码,是在加入一个订单的时候从账户上扣除相应的金额,这显然是一个Transaction,要么commit,要么rollback。看看这段代码:确实很巧妙.