Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }