internal void AutoMapColumnsAction <T>(params Expression <Func <T, object> >[] ignorePropertyExpressions) { VerifyAutoMapAlreadyCalled(); var properties = ObjectReflectionHelper.GetProperties(_data.Item.GetType()); var ignorePropertyNames = new HashSet <string>(); if (ignorePropertyExpressions != null) { foreach (var ignorePropertyExpression in ignorePropertyExpressions) { var ignorePropertyName = new PropertyExpressionParser <T>(_data.Item, ignorePropertyExpression).Name; ignorePropertyNames.Add(ignorePropertyName); } } foreach (var property in properties) { var ignoreProperty = ignorePropertyNames.SingleOrDefault(x => x.Equals(property.Value.Name, StringComparison.CurrentCultureIgnoreCase)); if (ignoreProperty != null) { continue; } var propertyType = ObjectReflectionHelper.GetPropertyType(property.Value); var propertyValue = ObjectReflectionHelper.GetPropertyValue(_data.Item, property.Value); ColumnAction(property.Value.Name, propertyValue, propertyType, DataTypes.Object, 0); } }
private object GetOrCreateInstance(object item, PropertyInfo property) { object instance = ObjectReflectionHelper.GetPropertyValue(item, property); if (instance == null) { instance = _dbCommandData.Context.Data.EntityFactory.Create(property.PropertyType); property.SetValue(item, instance, null); } return(instance); }