实体框架4.0错误无法添加或附加对象EntityReference具有与EntityKey不匹配的EntityKey值

时间:2010-10-03 21:10:49

标签: entity-framework

大家好我即将开始使用Entity Framework 4.0和ASP.NET 4.0我正在尝试制作一个主详细信息网页,当我尝试向以前记录的项目中添加新项目时,我遇到了问题是我为此做了:

private void guardarOrdenMedicamento()
    {

        InventarioSIAIplusEntities SIAplusContext = (InventarioSIAIplusEntities)(Session["context"]);

        InvOrden orden;
        string resultMessage;

        if (DetalleMedicamentosOrden.Count == 0)

        {
            MessageBox1.ShowError("Debe especificar al menos un medicamento para la orden.");
            return;

        }

        if (txtIDorden.Text.Trim() == "")
        {
             orden = new InvOrden();

             orden.IDcentro = Convert.ToInt32(ddlCentros.SelectedValue);
             orden.estado = ddlEstadoOrden.SelectedValue;
             orden.fecha = Convert.ToDateTime(txtFechaCreacion.Text);

             orden.comentario = txtComentarioOrden.Text;
             orden.usuarioCrea = "Jeanc";                
             SIAplusContext.AddToInvOrdenes(orden);

             resultMessage = "La orden fue registrada satisfactoriamente";

        }
        else

        {
             int idorden = Convert.ToInt32(txtIDorden.Text.Trim());
             orden = SIAplusContext.InvOrdenes.Where(c => c.IDorden == idorden).First();      

             orden.estado = ddlEstadoOrden.SelectedValue;
             orden.fecha = Convert.ToDateTime(txtFechaCreacion.Text);
             orden.comentario = txtComentarioOrden.Text;

             orden.usuarioCrea = "Jeanc";
             resultMessage = "La orden fue actualizada satisfactoriamente";


             foreach (var item in DetalleMedicamentosOrden)
             {
                 if (item.IDorden == 0)

                 {
                // item.IDorden = idorden;
                //     item.InvOrdenReference.EntityKey =  orden.EntityKey;

                         //neww System.Data.EntityKey("InventarioSIAIplusEntities.InvOrdenes", "IDorden", orden.IDorden);
                //   SIAplusContext.AddToInvOrdenDets(item);

                  item.InvOrden = orden;
                   //
              // SIAplusContext.AddToInvOrdenDets(item);
                 //orden.InvOrdenDets.Add(item);

                 }
                 else
                 {
                     InvOrdenDet det = SIAplusContext.InvOrdenDets.Where(c => c.IDorden == item.IDorden && c.IDmedicamento == item.IDmedicamento).First();

                     det.cantidadApr = item.cantidadApr;
                     det.cantidadSol = item.cantidadSol;
                     det.comentario = item.comentario;
                 }
             } 

        }


        SIAplusContext.SaveChanges();

   }

错误是:无法添加或附加对象,因为其EntityReference具有与此对象的EntityKey不匹配的EntityKey属性值。 谢谢你对此有任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为问题在于:

         item.InvOrden = orden;

您必须使用AddObject或更新现有对象的值。