• 基础才是重中之重~何为原子化操作


    占占定义:

    原子化操作,操作原子化,这在软件开发中经常被听到,那到底什么是操作原子化呢,其实从字面上不难理解,原子化就是一体化,整体化,原子化操作就是将多个操作组合在一起,要么这个组合一起发生,要么一个都不发生,这就是操作的原子化,在程序开发中,我们经常使用事务来干这事!

    网上的解释:

    一种不可分割的操作。从外部看,原子操作要么整体发生,要么根本不发生。例如,在实现业务交易的数据管理系统中,把每一笔业务交易都作为数据库上的原子化操作。这就意味着组成业务的所有数据更新操作或者都被执行,或者一个也不被执行;一部分更新操作被执行,而其他更新操作都不被执行的情况永远不可能发生。RAID阵列必须实现原子化的写操作,使得客户机能够正确地重组单磁盘语义。原子化操作用以确保部分组建的失效不会破坏存储的数据。

    C#中的原子化操作:

              using (TransactionScope scope = new TransactionScope())
                    {
                        var list = _context.Order.Include("OrderItem")
                            .Where(x => x.ID == order.ID);
                        if (list.Count() > 0)
                        {
                            //更新Order列
                            Order _order = list.First();
                            _order.Count = order.Count;
                            _order.Delivery = order.Delivery;
                            _order.Favorable = order.Favorable;
                            _order.Freightage = order.Freightage;
                            _order.OrderNumber = order.OrderNumber;
                            _order.PersonID = order.PersonID;
                            _order.Price = order.Price;
                            _order.TotalPrice = order.TotalPrice;
    
                            //删除原有的订单明细项OrderItem
                            if (list.First().OrderItem.Count != 0)
                                foreach (var item in list.First().OrderItem)
                                    DeleteOrderItem(item.ID);
                            //加入新的订单明细项OrderItem
                            if (order.OrderItem.Count != 0)
                            {
                                foreach (var item in order.OrderItem)
                                {
                                    var _orderItem = new OrderItem();
                                    _orderItem.Count = item.Count;
                                    _orderItem.Goods = item.Goods;
                                    _orderItem.OrderID = item.OrderID;
                                    _orderItem.Price = item.Price;
                                    AddOrderItem(_orderItem);
                                }
                            }
                            returnValue = _context.SaveChanges();
                        }
                        else
                            returnValue = 0;
    
                        scope.Complete();
                    }
                }

    感谢阅读!

  • 相关阅读:
    sizeof和strlen与带汉字字符的
    PS常用工具
    色彩原理和图层混合模式
    文字工具和栅格化
    CreateWaitableTimer和SetWaitableTimer函数(定时器)
    FMod终结篇
    理财达人五步走
    C++中的Union
    关于对于VCMFCATL的评论问题
    FMOD 快速上手
  • 原文地址:https://www.cnblogs.com/lori/p/2901538.html
Copyright © 2020-2023  润新知