public void BulkUpsertUploadedTest()
        {
            //Creaer objeto
            CiRegistroRepository crr=new CiRegistroRepository();

            Model.RegistroModel rm = new Model.RegistroModel(){IdRegistro=20130515135610664,IdPuntoMedicion=1022,FechaCaptura= new DateTime(2013,5,15,2,0,0),HoraRegistro=1356,DiaRegistro=15,Valor=2.21,AccionActual="prueba",IsActive=true,IsModified=false,LastModifiedDate=20130515143505728,IdCondicion=1,ServerLastModifiedDate=0,FechaNumerica=201403091657};

            //Crear parámetros de prueba
            List<Model.CiRegistroPOCO> registros = new List<Model.CiRegistroPOCO>();

            for (int i = 0; i < 5000; i++)
            {
                registros.Add(new Model.CiRegistroPOCO()
                {
                    IdRegistro = rm.IdRegistro + i,
                    IdPuntoMedicion = rm.IdPuntoMedicion,
                    DiaRegistro = rm.DiaRegistro,
                    Valor = rm.Valor,
                    AccionActual = rm.AccionActual,
                    HoraRegistro = rm.HoraRegistro,
                    IsActive = rm.IsActive,
                    IsModified = rm.IsModified,
                    LastModifiedDate = rm.LastModifiedDate,
                    IdCondicion = rm.IdCondicion,
                    ServerLastModifiedDate = (long)( (rm.ServerLastModifiedDate == null) ? 0 : rm.ServerLastModifiedDate),
                    FechaNumerica = Int64.Parse(String.Format("{0:yyyyMMddHHmm}", rm.FechaCaptura.AddHours(i)))
                });
            }

            //Llamar al método
            crr.UpsertUploaded(registros);
        }
        public void RegistroModelTest()
        {
            Model.RegistroModel r = new Model.RegistroModel()
            {

                IdRegistro = 20140405000411041,
                IdPuntoMedicion = 1052,
                FechaCaptura = new DateTime(2014, 3, 16),
                HoraRegistro = 0,
                DiaRegistro = 16,
                Valor = 0,
                AccionActual = "Abierta.",
                IsActive = false,
                IsModified = false,
                LastModifiedDate = 20140406104444923,
                IdCondicion = 1,
                ServerLastModifiedDate = 1,
                FechaNumerica = 201403260000
            };

            Console.WriteLine(r.FechaNumerica.ToString());
        }
        // Create.
        public void InsertRegistro(Model.RegistroModel registro,Model.UsuarioModel usuario)
        {
            using (var entity = new db_SeguimientoProtocolo_r2Entities())
            {
                if (registro != null)
                {
                    //Validar si el elemento ya existe
                    CI_REGISTRO result = null;
                    try
                    {
                        result = (from o in entity.CI_REGISTRO
                                  where o.IdRegistro == registro.IdRegistro
                                  select o).First();
                    }
                    catch (Exception)
                    {
                        try
                        {
                            result = (from o in entity.CI_REGISTRO
                                      where o.IdPuntoMedicion == registro.PUNTOMEDICION.IdPuntoMedicion &&
                                            o.HoraRegistro == registro.HoraRegistro &&
                                            (o.FechaCaptura.Month==registro.FechaCaptura.Month &&
                                             o.FechaCaptura.Day==registro.FechaCaptura.Day &&
                                             o.FechaCaptura.Year==registro.FechaCaptura.Year)
                                      select o).First();
                        }
                        catch (Exception)
                        {
                            ;
                        }
                    }
                    //nuevo registro
                    if (result == null)
                    {
                        entity.CI_REGISTRO.AddObject(
                            new CI_REGISTRO()
                            {
                                IdRegistro = registro.IdRegistro,
                                IdPuntoMedicion = registro.PUNTOMEDICION.IdPuntoMedicion,
                                FechaCaptura = registro.FechaCaptura,
                                HoraRegistro = registro.HoraRegistro,
                                DiaRegistro = registro.DiaRegistro,
                                Valor = registro.Valor,
                                AccionActual = registro.AccionActual,
                                IsActive = registro.IsActive,
                                IsModified = true,
                                LastModifiedDate = new UNID().getNewUNID(),
                                IdCondicion = registro.Condicion.IdCondicion,
                                FechaNumerica=registro.FechaNumerica
                            }
                        );
                        entity.SaveChanges();

                        trackRepository.InsertTracking(trackRepository.createTracking(registro, usuario, "Insert"));
                        //Actualiza tabla para subir informacion.
                        //_SyncRepository.UpdateSyn(entity);
                        _SyncRepository.UpdateIsModifiedData(ID_SYNCTABLE);
                    }
                    //actualiza registro
                    if (result != null)
                    {
                        Model.RegistroModel update =new Model.RegistroModel();
                        update.IdRegistro = result.IdRegistro;
                        update.Condicion = new Model.CondProModel()
                             {
                                 IdCondicion = registro.Condicion.IdCondicion
                             };

                        update.PUNTOMEDICION = new Model.PuntoMedicionModel()
                        {
                            IdPuntoMedicion = registro.PUNTOMEDICION.IdPuntoMedicion
                        };
                        update.FechaCaptura = registro.FechaCaptura;
                        update.HoraRegistro = registro.HoraRegistro;
                        update.DiaRegistro = registro.DiaRegistro;
                        update.Valor = registro.Valor;
                        update.AccionActual = registro.AccionActual;
                        update.IsActive = registro.IsActive;
                        update.IsModified = true;
                        update.FechaNumerica = registro.FechaNumerica;
                        UpdateRegistro(update,usuario);
                    }
                }
            }
        }
        // Read ID.
        public Model.RegistroModel GetRegistroID(Model.RegistroModel registro)
        {
            Model.RegistroModel _Registro = null;
            using (var entity = new db_SeguimientoProtocolo_r2Entities())
            {
                CI_REGISTRO result = null;
                try
                {

                    result = (from o in entity.CI_REGISTRO
                           where o.IdRegistro == registro.IdRegistro
                           select o).FirstOrDefault();

                }
                catch (Exception)
                {
                    ;
                }
                if (result != null)
                {
                    _Registro = new Model.RegistroModel()
                    {
                        IdRegistro=result.IdRegistro,
                        IdPuntoMedicion =result.IdPuntoMedicion ,
                        PUNTOMEDICION = new Model.PuntoMedicionModel()
                        {
                            PuntoMedicionName = result.CAT_PUNTO_MEDICION.PuntoMedicionName,
                            IdPuntoMedicion = result.CAT_PUNTO_MEDICION.IdPuntoMedicion,
                            vAccion=result.CAT_PUNTO_MEDICION.vAccion,
                            vCondicion=result.CAT_PUNTO_MEDICION.vAccion,
                            UNIDADMEDIDA = new Model.UnidadMedidaModel()
                            {
                                UnidadMedidaName = result.CAT_PUNTO_MEDICION.CAT_UNIDAD_MEDIDA.UnidadMedidaName,
                                UnidadMedidaShort = result.CAT_PUNTO_MEDICION.CAT_UNIDAD_MEDIDA.UnidadMedidaShort
                            },
                            TIPOPUNTOMEDICION = new Model.TipoPuntoMedicionModel()
                            {
                                IdTipoPuntoMedicion = result.CAT_PUNTO_MEDICION.CAT_TIPO_PUNTO_MEDICION.IdTipoPuntoMedicion,
                                TipoPuntoMedicionName = result.CAT_PUNTO_MEDICION.CAT_TIPO_PUNTO_MEDICION.TipoPuntoMedicionName
                            }
                        },
                        FechaCaptura= result.FechaCaptura,
                        HoraRegistro= result.HoraRegistro,
                        DiaRegistro= result.DiaRegistro,
                        Valor= result.Valor,
                        AccionActual = result.AccionActual,
                        IsModified= result.IsModified,
                        LastModifiedDate= result.LastModifiedDate,
                        ServerLastModifiedDate=result.ServerLastModifiedDate,
                        Condicion = new Model.CondProModel()
                             {
                                 CondicionName = result.CAT_CONDPRO.CondicionName,
                                 IdCondicion = result.CAT_CONDPRO.IdCondicion,
                                 PathCodicion = result.CAT_CONDPRO.PathCodicion,
                             },
                        IdCondicion = result.IdCondicion,

                    };

                }
            }
            return _Registro;
        }