Beispiel #1
0
        private void AddConstraint(PropertyCompareOperator op, object val)
        {
            if (_pending == null)
            {
                throw new InvalidOperationException("查询构造出错:你必须先调用方法 Constrain。");
            }

            //如果没有指定属性对应的实体类型,则使用当前仓库对应的实体来作为属性的拥有者。
            var propertyOwner = _pendingOwner;

            if (propertyOwner == null)
            {
                propertyOwner = _pending.OwnerType;
                if (_repo.EntityType.IsSubclassOf(propertyOwner))
                {
                    propertyOwner = _repo.EntityType;
                }
            }

            var constraint = new PropertyConstraint
            {
                Context      = this,
                Property     = _pending,
                ConcreteType = propertyOwner,
                Operator     = op,
                Value        = val
            };

            this.AddConstraint(constraint);

            _pending      = null;
            _pendingOwner = null;
        }
Beispiel #2
0
        private PropertyConstraint ConstrainProperty(PropertyComparisonExpression exp)
        {
            var constraint = new PropertyConstraint(exp)
            {
                Context = Context,
            };

            return(constraint);
        }