sportdog

导航

 

描述: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:验证通过.

posted on 2013-11-01 14:06  sportdog  阅读(268)  评论(0编辑  收藏  举报