2010-10-03 70 views
1

嗨,大家好,我开始使用Entity Framework 4.0和ASP.NET 4.0我试图制作一个主详细信息网页和我遇到的问题,当我尝试添加新项目低于先前记录的项目是本作的我:实体框架4.0错误无法添加或附加对象EntityReference的EntityKey值与EntityKey不匹配

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属性值。 谢谢对此有任何帮助。

+0

你在哪一行得到异常抛出? – Yakimych 2010-10-04 08:23:14

回答

0

我觉得现在的问题是在这里:

  item.InvOrden = orden; 

你要么必须使用ADDOBJECT或更新值的现有对象。

+0

我已经尝试了两个,我也得到一个错误 – 2010-10-04 18:41:04

相关问题