Ejemplo n.º 1
0
        public ErrorCollection Validate <TDomainRule, TParameter>(TEntity entity, TParameter parameter)
            where TDomainRule : Rule <TEntity, TParameter>
            where TParameter : struct
        {
            var constructor = _objectInfo.GetConstructor(typeof(TDomainRule), typeof(TEntity));
            var domainRule  = _objectInfo.CreateInstance <TDomainRule>(constructor, entity);

            return(domainRule.Validate(parameter));
        }
Ejemplo n.º 2
0
        internal override async Task BuildValueAsync(DbDataReader reader, CancellationToken cancellationToken)
        {
            if (await reader.ReadAsync(cancellationToken).ConfigureAwait(false))
            {
                if (TypeConverter.IsNotEntityAndConvertible(s_resultType))
                {
                    ITypeConverter typeConverter = TypeConverter.For(s_resultType) ?? TypeConverter.Default;

                    Value = (T)typeConverter.ConvertFromDbValue(reader, 0, s_resultType);
                }
                else
                {
                    IObjectInfo objectInfo = ObjectInfo.For(s_resultType);

                    Value = (T)objectInfo.CreateInstance(reader);
                }

                HasValue = true;

                if (await reader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                    throw new MicroLiteException(ExceptionMessages.Include_SingleRecordExpected);
                }

                _callback?.Invoke(this);
            }
        }
Ejemplo n.º 3
0
        internal override async Task BuildValueAsync(DbDataReader reader, CancellationToken cancellationToken)
        {
            if (TypeConverter.IsNotEntityAndConvertible(s_resultType))
            {
                ITypeConverter typeConverter = TypeConverter.For(s_resultType) ?? TypeConverter.Default;

                while (await reader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                    var value = (T)typeConverter.ConvertFromDbValue(reader, 0, s_resultType);

                    Values.Add(value);
                }
            }
            else
            {
                IObjectInfo objectInfo = ObjectInfo.For(s_resultType);

                while (await reader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                    var instance = (T)objectInfo.CreateInstance(reader);

                    Values.Add(instance);
                }
            }

            HasValue = Values.Count > 0;

            _callback?.Invoke(this);
        }