public T DynamicObject(T entity) { var methodName = ((int)PropertyUtilities.TryGetProperty(entity, "Id") != 0) ? "Update" : "Create"; var method = _dynamicObjectService.GetType().GetMethod(methodName); var genericMethod = method.MakeGenericMethod(typeof(T)); var result = genericMethod.Invoke(_dynamicObjectService, new object[] { entity }); return((T)result); }
public T Update <T>(T entity) where T : class { var fieldsToIgnore = new string[] { "Id", "Created", "CreatedBy", "Modified", "ModifiedBy" }; int id = (int)PropertyUtilities.TryGetProperty(entity, "Id"); T found = FindById <T>(id); foreach (PropertyInfo property in typeof(T).GetProperties()) { if (!fieldsToIgnore.Contains(property.Name)) { PropertyUtilities.TrySetProperty(found, property.Name, property.GetValue(entity)); } } PropertyUtilities.TrySetProperty(found, "Modified", DateTime.Now); PropertyUtilities.TrySetProperty(found, "ModifiedBy", 1); _context.SaveChanges(); return(found); }