public int Inserta(int pIntIdProyecto, String pStrDescripcion, String pStrEspecificaciones, 
            Decimal pDecValorReferencial, String pStrTipoEjecutor, String pStrNomEjecutor, String pStrApeEjecutor, String pStrRazonSocialEjecutor,
            String pStrNomContacto, String pStrApeContaco, String pStrEmailContacto,
            String pStrTelfContacto, String pStrDireccionContacto, String pStrNomSupervisor,
            String pStrApeSupervisor, String pStrTelfSupervisor, String pStrEmailSupervisor,
            List<DocumentoExpedienteTecnicoOP> pLstDocumentos)
        {
            int intResultado = -999;

            try
            {
                ObrasPublicasEntities objContext = new ObrasPublicasEntities();

                ObjectParameter objResult = new ObjectParameter("pIntIdExp_out", typeof(int));
                //int intRes =
                 objContext.sp_gop_ins_exp(pIntIdProyecto, pStrDescripcion, pStrEspecificaciones, pDecValorReferencial,
                    pStrTipoEjecutor, pStrNomEjecutor, pStrApeEjecutor, pStrRazonSocialEjecutor, pStrNomContacto,
                    pStrApeContaco, pStrEmailContacto, pStrTelfContacto, pStrDireccionContacto, pStrNomSupervisor, pStrApeSupervisor,
                    pStrTelfSupervisor, pStrEmailSupervisor, objResult);

                 int intIdExpediente = Convert.ToInt32(objResult.Value.ToString());

                 foreach (var objDoc in pLstDocumentos) {
                     OP_DOCUMENTO_EXPEDIENTE_TECNICO objOP_DOCUMENTO_EXPEDIENTE_TECNICO = new OP_DOCUMENTO_EXPEDIENTE_TECNICO();
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.coDocumento = objDoc.IdDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.coExpediente = intIdExpediente;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.feEmision = DateTime.Now;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.nomArchivo = objDoc.NomArchivo;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.noTipoDocExpTec = objDoc.TipoDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.nuNroDOcumento = objDoc.NroDocumento;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.txDescripcion = objDoc.Descripcion;
                     objOP_DOCUMENTO_EXPEDIENTE_TECNICO.txRutaArchivo = objDoc.RutaArchivo;

                     objContext.AddToOP_DOCUMENTO_EXPEDIENTE_TECNICO(objOP_DOCUMENTO_EXPEDIENTE_TECNICO);
                 }
                 objContext.SaveChanges();

                 if (intIdExpediente > 0)
                 {
                     intResultado = 1;
                 }
                 else {
                     intResultado = intIdExpediente;
                 }
            }
            catch (Exception ex) {

            }
            return intResultado;
        }