public override bool TryResolve(string name, out object value) { bool resolved = false; if (null != _params) { resolved = _params.TryResolve(name, out value); value = EmptyStringToNull(value); } else { value = null; } if (!resolved) { ///若自动匹配的 ISqlParameter不能正常分解SQL参数,于是试图从DaoFactory中获取所有ISqlParameter去分解 ///若分解成功则把分解出来的值值空 foreach (ISqlParameters parameter in DaoFactory.Parameters) { if (parameter.TryResolve(name, out value)) { value = EmptyStringToNull(value); return(true); } } } return(resolved); }
public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { if (_paramClause != null) { object value; bool exist = parameters.TryResolve(_paramClause.ParamName, out value); if (!_strict && (null == value || (value is string && string.IsNullOrEmpty(value as string)))) { return(false); } if (_strict && !exist) { return(false); } } if (_foundNestedDynamicClause) { bool anyNestedDynamicClauseExecuted = false; SqlCommandBuilder nestedBuilder = new SqlCommandBuilder(); foreach (SqlClause clause in _childs) { if (clause.ToCommand(provider, nestedBuilder, parameters) && clause is DynamicClause) { anyNestedDynamicClauseExecuted = true; } } //只有任何一个嵌套的动态语句被执行了才进行输出 if (anyNestedDynamicClauseExecuted) { builder.AppendCommandText(nestedBuilder.CommandText.ToString()); nestedBuilder.Params.ForEach(p => builder.AddCommandParameter(p)); } return(anyNestedDynamicClauseExecuted); } else { foreach (SqlClause clause in _childs) { clause.ToCommand(provider, builder, parameters); } return(true); } }
public override bool TryResolve(string name, out object value) { if (null != _items && _items.TryGetValue(name, out value)) { return(true); } else if (null != _params && _params.TryResolve(name, out value)) { return(true); } value = null; return(false); }