【问题标题】:Master details batch crud with entity framework only saving single detail record具有实体框架的主详细信息批处理 crud 仅保存单个详细记录
【发布时间】:2013-07-25 04:29:59
【问题描述】:

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

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();
    }

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

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-5 master-detail edmx objectcontext


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      相关资源
      最近更新 更多