0

我正在构建一个带有批量编辑的主详细信息页面,即具有单个主记录的多个详细信息记录。但只有一个详细记录被保存到数据库中。我尝试调试并发现详细循环正在准确执行多次,但没有保存多个数据。这是我的保存方法代码:

public ActionResult CMN_VAL_FORM(HRM_CMN_VLU_MST_ViewModel model)
    {
        //var ctx=new Entities1();
        var CMN_VLU_MST_OBJ = new HRM_CMN_VLU_MST();
        var CMN_VLU_DTL_OBJ = new HRM_CMN_VLU_DTL();

        //using (TransactionScope transaction = new TransactionScope())
        //{

            using (var ctx = new Entities1())
            {
                var type_code = ctx.ExecuteStoreQuery<string>("select get_pk_code('hrm_cmn_vlu_mst','CMN_VLU_TYPE_CODE') from dual").SingleOrDefault(); //A scalar function to generate the code in the format yymmdd0001
                var value_code = ctx.ExecuteStoreQuery<string>("select get_pk_code('hrm_cmn_vlu_dtl','CMN_VLU_CODE') from dual").SingleOrDefault();
                CMN_VLU_MST_OBJ.CMN_VLU_TYPE_CODE = type_code;
                CMN_VLU_MST_OBJ.CMN_VLU_REM = model.CMN_VLU_REM;
                CMN_VLU_MST_OBJ.CMN_VLU_TYPE_FOR = model.CMN_VLU_TYPE_FOR;
                CMN_VLU_MST_OBJ.CMN_VLU_TYPE_SRTNM = model.CMN_VLU_TYPE_SRTNM;
                CMN_VLU_MST_OBJ.ENTRY_DATE = DateTime.Now;
                CMN_VLU_MST_OBJ.CMN_VLU_TYPE_NAME = model.CMN_VLU_TYPE_NAME;

                foreach (var item in model.HRM_CMN_VLU_DTL)
                {

                    CMN_VLU_DTL_OBJ.CMN_VLU_LEVL = item.CMN_VAL_LEVL;
                    CMN_VLU_DTL_OBJ.CMN_VLU_REM = item.CMN_VLU_REM;
                    CMN_VLU_DTL_OBJ.CMN_VLU_SLNO = item.CMN_VLU_SLNO;
                    CMN_VLU_DTL_OBJ.CMN_VLU_TITL = item.CMN_VAL_TITL;
                    CMN_VLU_DTL_OBJ.CMN_VLU_CNTN = item.CMN_VAL_CNTN;
                    CMN_VLU_DTL_OBJ.CMN_VLU_CODE = value_code;
                    CMN_VLU_DTL_OBJ.CMN_VLU_TYPE_CODE = type_code;
                    CMN_VLU_DTL_OBJ.ENTRY_DATE = DateTime.Now;
                    CMN_VLU_DTL_OBJ.MAIL_ADDR_INT = item.MAIL_ADDR_INT;
                    CMN_VLU_DTL_OBJ.MAIL_ADDR_EXT = item.MAIL_ADDR_EXT;
                    CMN_VLU_DTL_OBJ.MAIL_AUTO_SEND_INT = item.MAIL_AUTO_SEND_INT;
                    CMN_VLU_DTL_OBJ.MAIL_AUTO_SEND_EXT = item.MAIL_AUTO_SEND_EXT;
                    CMN_VLU_DTL_OBJ.ACTIVE_STATUS = item.ACTIVE_STATUS;
                    CMN_VLU_MST_OBJ.HRM_CMN_VLU_DTL.Add(CMN_VLU_DTL_OBJ);

                    ctx.SaveChanges();
                    var temp_value_code = Int32.Parse(value_code);
                    temp_value_code++;
                    value_code = temp_value_code.ToString();
                    ctx.HRM_CMN_VLU_MST.AddObject(CMN_VLU_MST_OBJ);
                }


                ctx.SaveChanges();

            //    transaction.Complete();

            //}
        }



        return View();
    }

代码没有错误消息,但没有保存多个详细记录。我做错了什么?

4

1 回答 1

0

我做错了什么,我只创建了一次对象,每次执行 foreach 循环时都更新了同一个对象!我只是将对象声明移到 foreach 循环中,它就像一个魅力!

于 2013-07-25T06:58:22.367 回答