internal PredicateExpressionTranslator(IOptions <EntityMapperOptions> options) { Check.IfNullOrZero(options); _options = options.Value; _parameterNameStack = new Stack <String>(); _predicateTypeStack = new Stack <PredicateType>(); _aliasMapper = new List <KeyValuePair <String, String> >(); _statementResultBuilder = new StatementResultBuilder(); }
/// <summary> /// 执行表达式翻译出的sql语句 /// </summary> /// <returns></returns> internal ExecutorResult Execute(StatementResultBuilder statementResultBuilder) { using (statementResultBuilder) { var(sql, parameters) = statementResultBuilder.Build(); var parametersInternal = parameters.ToArray(); sql = ReformatSql(sql); var executeType = GetExecuteType(sql); switch (executeType) { case ExecuteType.SELECT: return(_mapperDbContextBase.Select(sql, parametersInternal)); case ExecuteType.UPDATE: return(_mapperDbContextBase.Update(sql, parametersInternal)); case ExecuteType.INSERT: return(_mapperDbContextBase.Insert(sql, parametersInternal)); default: throw new InvalidOperationException($@"无效的sql语句操作{executeType}"); } } }