0

バッチ編集でマスター詳細ページを作成しています。つまり、単一のマスター レコードを持つ複数の詳細レコードです。ただし、データベースに保存される詳細レコードは 1 つだけです。デバッグしようとしましたが、詳細ループが複数回正確に実行されていることがわかりましたが、複数のデータを保存していません。保存方法のコードは次のとおりです。

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 に答える