예제 #1
0
        public static T ObtenerPorId <T>(int id) where T : class
        {
            var ctx      = new TaskDbContext();
            var elemento = ctx.Set <T>().Find(id);

            return(elemento != null ? elemento : (T)Activator.CreateInstance(typeof(T)));
        }
예제 #2
0
        public static void Borrar <T>(int id) where T : class
        {
            var ctx             = new TaskDbContext();
            T   elementoABorrar = ObtenerPorId <T>(id);

            if (!elementoABorrar.Equals((T)Activator.CreateInstance(typeof(T))))
            {
                ctx.Set <T>().Remove(elementoABorrar);
                ctx.SaveChanges();
            }
        }
예제 #3
0
        public static void Actualizar <T>(T elemento, int id) where T : class
        {
            var ctx            = new TaskDbContext();
            var propiedades    = elemento.GetType().GetProperties();
            T   elementoActual = ctx.Set <T>().Find(id);

            if (!elementoActual.Equals((T)Activator.CreateInstance(typeof(T))))
            {
                foreach (var prop in propiedades)
                {
                    if (prop.Name != "Id")
                    {
                        elementoActual.GetType().GetProperty(prop.Name).SetValue(elementoActual, elemento.GetType().GetProperty(prop.Name).GetValue(elemento, null), null);
                    }
                }

                ctx.SaveChanges();
            }
        }
예제 #4
0
        public static List <T> ObtenerPorExpresion <T>(Expression <Func <T, bool> > expresion) where T : class
        {
            var ctx = new TaskDbContext();

            return(ctx.Set <T>().Where(expresion).ToList());
        }
예제 #5
0
        public static List <T> ObtenerTodo <T>() where T : class
        {
            var ctx = new TaskDbContext();

            return(ctx.Set <T>().ToList <T>());
        }