zoukankan      html  css  js  c++  java
  • Linq to sql 之 事务

    描述:linq 是自带事物的.如果建了两个linq to sql 类,各自访问不同的数据库,事物如何保证呢.

    验证:采用常用的COM+事务来验证一下是否有效.

     ServiceConfig config = new ServiceConfig();
                config.Transaction = TransactionOption.Required;
                ServiceDomain.Enter(config);
                try
                {
                    OA_TAB_LVBAL lvbal = dbHr.OA_TAB_LVBAL.SingleOrDefault(p => p.OA_LV_LEAVECODE == leaveCode && p.OA_LV_STAFFNO == staffNo && p.OA_LV_STARTDATE == balEndDate.AddYears(-1) && p.OA_LV_ENDDATE == balEndDate);
                    if (lvbal == null)
                    {
                        lvbal = new OA_TAB_LVBAL();
                        lvbal.OA_LV_STAFFNO = staffNo;
                        lvbal.OA_LV_ADJUSTMENT = 0;
                        //需判断文职或非文职
                        lvbal.OA_LV_ASSIGNEDDAYS = 15;
                        lvbal.OA_LV_ENDDATE = balEndDate;
                        lvbal.OA_LV_LEAVECODE = "AL";
                        lvbal.OA_LV_REMARK = DateTime.Now.ToString() + "Insert";
                        lvbal.OA_LV_STARTDATE = balEndDate.AddYears(-1);
                        dbHr.OA_TAB_LVBAL.InsertOnSubmit(lvbal);
                        dbHr.SubmitChanges();
    
                    }
    
                    OA_TAB_CONTRACT_TASKS task = new OA_TAB_CONTRACT_TASKS();
                    task.DOC_ID = "1001";
                    task.TASK_COMPLETEDATE = DateTime.Now;
                    task.TASK_EXECUTOR = "200718";
                    task.TASK_ID = 1;
                    task.TASK_NAME = "test";
                    task.TASK_STARTDATE = DateTime.Now;
                    task.TASK_STATUS = 1;
                    task.TASK_TYPE = "BZ";
                    dbOa.OA_TAB_CONTRACT_TASKS.InsertOnSubmit(task);
                    dbOa.SubmitChanges();
                    ContextUtil.SetComplete();
                }
                catch (Exception ex)
                {
                    ContextUtil.SetAbort();
                    throw ex;
                }
                finally
                {
                    ServiceDomain.Leave();
                }

    向HR的数据库中oa_tab_lvbal 及OA的OA_TAB_CONTRACT_tasks 分别insert 一条记录.

    1:执行成功,表中多了一条数据

    2: 删除oa_tab_lvbal中插入的数据

    3:执行,task表中插入时会抛出异常. 期望结果:oa_tab_lvbal中的记录也插入不成功.

    4:验证通过.

  • 相关阅读:
    Word中查找替换软回车键和回车键
    淘宝网质量属性分析
    软件架构师是如何工作的
    《软件需求最佳实践》阅读笔记06
    《软件需求最佳实践》阅读笔记05
    《软件需求最佳实践》阅读笔记04
    《软件需求最佳实践》阅读笔记03
    《软件需求最佳实践》阅读笔记02
    《软件需求最佳实践》阅读笔记01
    BZOJ 2957 楼房重建(线段树区间合并)
  • 原文地址:https://www.cnblogs.com/sportdog/p/3401780.html
Copyright © 2011-2022 走看看