Beispiel #1
0
        public virtual TModel BuildFrom(IDbReader reader)
        {
            if (!reader.Read())
            {
                return(null);
            }

            var model = new TModel();

            Properties.ForEach(property =>
            {
                if (!reader.IsDbNull(property.Name))
                {
                    property.SetValue(model, reader[property.Name], null);
                }
            });

            ManyToOneProperties.ForEach(property =>
            {
                var propertyName = property.Name + "Id";

                if (!reader.IsDbNull(propertyName))
                {
                    var manyToOneObject = Activator.CreateInstance(property.PropertyType);
                    var idProperty      = property.PropertyType.GetRuntimeProperty("Id");
                    idProperty.SetValue(manyToOneObject, reader[propertyName], null);

                    property.SetValue(model, manyToOneObject, null);
                }
            });

            return(model);
        }