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; }
private PropertyConstraint ConstrainProperty(PropertyComparisonExpression exp) { var constraint = new PropertyConstraint(exp) { Context = Context, }; return(constraint); }