protected virtual IEnumerable <ColumnInfo> GetUserInterestedColumns(IEnumerable <ColumnInfo> tableColumnsList) { var tableColumnsListFiltered = new List <ColumnInfo>(); foreach (var entityPropertyInfo in ModelUtil.GetModelPropertiesInfo <T>()) { var propertyMappedTo = _mapper?.GetMapping(entityPropertyInfo); var propertyName = propertyMappedTo ?? entityPropertyInfo.Name; // If model property is mapped to table column keep it foreach (var tableColumn in tableColumnsList) { if (string.Equals(tableColumn.Name.ToLowerInvariant(), propertyName.ToLowerInvariant(), StringComparison.OrdinalIgnoreCase)) { if (tableColumnsListFiltered.Any(ci => string.Equals(ci.Name, tableColumn.Name, StringComparison.OrdinalIgnoreCase))) { throw new ModelToTableMapperException("Model with columns having same name."); } tableColumnsListFiltered.Add(tableColumn); break; } } } return(tableColumnsListFiltered); }
protected virtual IEnumerable <TableColumnInfo> GetUserInterestedColumns(IEnumerable <TableColumnInfo> tableColumnsList) { var tableColumnsListFiltered = new List <TableColumnInfo>(); foreach (var entityPropertyInfo in ModelUtil.GetModelPropertiesInfo <T>()) { var notMappedAttribute = entityPropertyInfo.GetCustomAttribute(typeof(NotMappedAttribute)); if (notMappedAttribute != null) { continue; } var propertyMappedTo = _mapper?.GetMapping(entityPropertyInfo); var propertyName = propertyMappedTo ?? entityPropertyInfo.Name; // If model property is mapped to table column keep it foreach (var tableColumn in tableColumnsList) { if (string.Equals(tableColumn.Name.ToLowerInvariant(), propertyName.ToLowerInvariant(), StringComparison.OrdinalIgnoreCase)) { if (tableColumnsListFiltered.Any(ci => string.Equals(ci.Name, tableColumn.Name, StringComparison.OrdinalIgnoreCase))) { throw new ModelToTableMapperException("Your model specify a [Column] attributed Name that has same name of another model property."); } tableColumnsListFiltered.Add(tableColumn); break; } } } return(tableColumnsListFiltered); }
protected virtual T MaterializeEntity(List <Message> messages, IModelToTableMapper <T> mapper) { var entity = new T(); foreach (var entityPropertyInfo in this.EntiyProperiesInfo) { var propertyMappedTo = mapper?.GetMapping(entityPropertyInfo); var columnName = propertyMappedTo ?? entityPropertyInfo.Name; var message = messages.FirstOrDefault(m => string.Equals(m.Recipient, columnName, StringComparison.CurrentCultureIgnoreCase)); if (message == default(Message)) { continue; } var columnInfo = this.GetColumnInfo(columnName); var value = this.GetValue(entityPropertyInfo, columnInfo, message.Body); this.SetValue(entity, entityPropertyInfo.Name, value); } return(entity); }