zoukankan      html  css  js  c++  java
  • 基础才是重中之重~何为原子化操作

    占占定义:

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

    网上的解释:

    一种不可分割的操作。从外部看,原子操作要么整体发生,要么根本不发生。例如,在实现业务交易的数据管理系统中,把每一笔业务交易都作为数据库上的原子化操作。这就意味着组成业务的所有数据更新操作或者都被执行,或者一个也不被执行;一部分更新操作被执行,而其他更新操作都不被执行的情况永远不可能发生。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();
                    }
                }

    感谢阅读!

  • 相关阅读:
    努力学习吧!
    C# 捕捉键盘事件
    oracle 11g 及 plsqldeveloper 相关操作
    Oracle 建表空间
    窗体程序 防止重复打开子窗体
    asp 下 ewebeditor 上传图片功能,在IE7,IE8 及更高版本上失效解决方法
    StringBuilder 在后台动态输出 html 代码
    起动停止 Oracle11g 三个服务的批处理写法
    MySQL 常用命令语句
    虚拟机—pychrm
  • 原文地址:https://www.cnblogs.com/lori/p/2901538.html
Copyright © 2011-2022 走看看