/// <summary> /// Command를 수행하고, 결과를 XML 문자열로 반환합니다. /// </summary> /// <param name="repository">Repository</param> /// <param name="requestItem">요청 정보</param> /// <returns>Data 처리 결과의 XML 문자열</returns> public override string Execute(IAdoRepository repository, RequestItem requestItem) { Repository = repository; var method = requestItem.Method; var requestParameters = requestItem.Parameters; if (IsDebugEnabled) { log.Debug("{0}를 수행합니다... method=[{1}], requestParameters=[{2}]", GetType().FullName, method, requestParameters.CollectionToString()); } var query = repository.QueryProvider.GetQuery(method).AsText(method); string result; using (var cmd = repository.GetCommand(query, true)) { repository.ExecuteNonQuery(cmd, GetParameters(requestParameters)); var outputs = AdoTool.GetOutputParameters(repository.Db, cmd); result = JsonTool.SerializeAsText(outputs); } if (IsDebugEnabled) { log.Debug("{0}를 완료했습니다. method=[{1}], requestParameters=[{2}]", GetType().FullName, method, requestParameters.CollectionToString()); } return(result); }
/// <summary> /// Command를 수행하고, 결과를 XML 문자열로 반환합니다. /// </summary> /// <param name="repository">Repository</param> /// <param name="requestItem">요청 정보</param> /// <returns>Data 처리 결과의 XML 문자열</returns> public override string Execute(IAdoRepository repository, RequestItem requestItem) { Repository = repository; var method = requestItem.Method; var requestParameters = requestItem.Parameters; if(IsDebugEnabled) log.Debug("{0}를 수행합니다... method=[{1}], requestParameters=[{2}]", GetType().FullName, method, requestParameters.CollectionToString()); var query = repository.QueryProvider.GetQuery(method).AsText(method); string result; using(var cmd = repository.GetCommand(query, true)) { repository.ExecuteNonQuery(cmd, GetParameters(requestParameters)); var outputs = AdoTool.GetOutputParameters(repository.Db, cmd); result = JsonTool.SerializeAsText(outputs); } if(IsDebugEnabled) log.Debug("{0}를 완료했습니다. method=[{1}], requestParameters=[{2}]", GetType().FullName, method, requestParameters.CollectionToString()); return result; }
//! =============================================================================================== /// <summary> /// 지정된 Command를 수행하고, RETURN_VALUE를 반환합니다. /// </summary> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="cmd">실행할 DbCommand</param> /// <param name="parameters">인자</param> /// <returns>Procedure인 경우 return value를 반환한다. 반환값이 없으면 0을 반환한다.</returns> public static object ExecuteCommand(this IAdoRepository repository, DbCommand cmd, params IAdoParameter[] parameters) { cmd.ShouldNotBeNull("cmd"); repository.ExecuteNonQuery(cmd, parameters); return(AdoTool.GetReturnValue(repository.Db, cmd, 0)); }
//! ====================================================================================== /// <summary> /// <see cref="IAdoRepository.ExecuteNonQuery(string, IAdoParameter[])"/>를 비동기 방식으로 수행합니다. /// </summary> /// <param name="repository">Repository</param> /// <param name="query">실행할 쿼리문 또는 Procedure Name</param> /// <param name="parameters">Parameters</param> /// <returns>영향받는 레코드수를 결과값으로 제공하는 Task</returns> public static Task <int> ExecuteNonQueryAsync(this IAdoRepository repository, string query, params IAdoParameter[] parameters) { query.ShouldNotBeWhiteSpace("query"); if (IsDebugEnabled) { log.Debug("비동기 방식으로 쿼리를 수행합니다... query=[{0}], parameters=[{1}]", query, parameters.CollectionToString()); } return(Task.Factory.StartNew(() => repository.ExecuteNonQuery(query, parameters))); }
/// <summary> /// PREQUERIES, POSTQUERIES에 있는 결과를 반환할 필요없는 단순 Query문을 실행합니다. /// </summary> /// <param name="ado">AdoRepository</param> /// <param name="queries">queries to execute</param> private static void ExecuteSimpleQuery(IAdoRepository ado, IEnumerable <XdsQuery> queries) { foreach (var query in queries.Where(q => q.Query.IsNotWhiteSpace()).Select(q => q.Query)) { if (IsDebugEnabled) { log.Debug("요청 처리 사전/사후 설정용 쿼리문을 수행합니다... query=[{0}]", query); } ado.ExecuteNonQuery(query); } }
/// <summary> /// PREQUERIES, POSTQUERIES에 있는 결과를 반환할 필요없는 단순 Query문을 실행합니다. /// </summary> /// <param name="ado">AdoRepository</param> /// <param name="queries">queries to execute</param> private static void ExecuteSimpleQuery(IAdoRepository ado, IEnumerable<XdsQuery> queries) { foreach(var query in queries.Where(q => q.Query.IsNotWhiteSpace()).Select(q => q.Query)) { if(IsDebugEnabled) log.Debug("요청 처리 사전/사후 설정용 쿼리문을 수행합니다... query=[{0}]", query); ado.ExecuteNonQuery(query); } }